Redis 作为高性能键值数据库,支持 9 种核心数据类型,每种类型都有独特的使用场景。以下是详细解析:

在这里插入图片描述


一、基础数据类型(5种)

  1. String(字符串)

    • 特点:最大 512MB,可存储文本/二进制数据
    • 场景:缓存、计数器(INCR)、分布式锁(SETNX
    • 示例SET user:1000 "Alice"
  2. List(列表)

    • 特点:双向链表结构,元素可重复
    • 场景:消息队列、最新消息排行、操作记录
    • 示例LPUSH news:latest "Breaking: AI breakthrough"
  3. Hash(哈希表)

    • 特点:键值对集合,适合存储对象
    • 场景:用户信息、商品属性、配置参数
    • 示例
      HSET user:1000 name "Bob" age 28
      HGET user:1000 age
      
  4. Set(集合)

    • 特点:无序唯一元素集合,支持交并差运算
    • 场景:共同好友、抽奖白名单、标签系统
    • 示例SADD lottery:2023 user1000 user1001
  5. Sorted Set(有序集合)

    • 特点:元素带分数(score)实现自动排序
    • 场景:排行榜、延时队列、范围查询
    • 示例ZADD leaderboard 95 "PlayerA" 87 "PlayerB"

二、高级数据类型(4种)

  1. Bitmaps(位图)

    • 本质:String 的位操作扩展
    • 场景:用户签到、实时活跃统计
    • 示例SETBIT sign:202307 28 1 (记录7月28日签到)
  2. HyperLogLog

    • 特点:基数统计(误差率 0.81%)
    • 场景:UV 统计、大规模去重
    • 示例PFADD visitors:20230729 user123
  3. GEO(地理位置)

    • 底层:基于 Sorted Set 实现
    • 场景:附近的人、位置搜索
    • 示例
      GEOADD cities 116.397128 39.916527 "Beijing"
      GEORADIUS cities 116.40 39.90 100 km
      
  4. Stream

    • 特点:支持消息持久化与消费组
    • 场景:消息队列、事件溯源
    • 示例
      XADD orders * product "iPad" price 599
      XREAD COUNT 2 STREAMS orders 0-0
      

三、选择指南(何时用什么?)

数据类型 典型场景 关键优势
String 缓存、计数器 简单高效
Hash 对象存储 字段级操作
Sorted Set 排行榜 自动排序+范围查询
Bitmaps 实时统计 超高存储效率
Stream 消息队列 持久化+消费组管理

四、思维导图

在这里插入图片描述

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐