Redis 数据类型
Redis 数据类型
字符串(String)
功能说明
String 可存储文本、数字,其中数字支持自增自减、加减浮点数操作。
常用指令
可通过 Help @string 查看完整常用指令,核心指令如下:
| 指令 | 说明 |
|---|---|
| APPEND key value | 向键的value后追加字符串,键不存在则创建 |
| DECR key | 将键的整数值减1,键不存在则初始值为0 |
| DECRBY key decrement | 将键的整数值减去指定数值,键不存在则初始值为0 |
| DELEX key [IFEQ ifeq-value|IFNE ifne-value |IFDEQ ifdeg-digest|IFDNE ifdne-digest] | 基于值或摘要比较,条件性删除指定键 |
| DIGEST key | 返回字符串值的 XXH3 哈希 |
| GET key | 返回键对应的字符串值 |
| GETDEL key | 返回键的字符串值后删除该键 |
| GETEX key [EX seconds|PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds |PERSIST] | 返回键的字符串值并设置其过期时间 |
| GETRANGE key start end | 返回键对应value中索引start到end的子字符串 |
| set key value | 字符串设值 |
| setnx key value | 仅当键不存在时设置值 |
| strlen key | 查看键对应value的字符串长度 |
| get key | 获取键对应的value |
| incr key | 将键对应的value自增(+1),仅支持数值型value |
| incrby key number | 将键对应的value自增指定数值(number可负数) |
| incrbyfloat key number | 将键对应的value自增指定浮点数 |
| decr/decrby | 与incr/incrby语法相同,实现自减功能 |

使用场景
- 缓存信息
- 计数器(id生成器、点赞数、文章阅读量等)
- 分布式锁
哈希(Hash)
功能说明
键值对集合,适合存储对象数据,支持单独更新对象属性。
常用指令
可通过 Help @hash 查看完整常用指令,核心指令如下(后续自行查看指令文档,不在书写):
| 指令 | 说明 |
|---|---|
| HDEL key field [field ...] | 删除哈希中的一个或多个字段及其值,若字段为空则删除哈希 |
| HEXISTS key field | 判断哈希中是否存在指定字段 |
| HEXPIRE key seconds [NX|XX|GT|LT] FIELDS numfields field [field ...] | 为哈希字段设置相对过期时间(秒) |
| HEXPIREAT key unix-time-seconds [NX|XX|GT|LT] FIELDS numfields field [field ...] | 为哈希字段设置绝对Unix时间戳过期时间(秒) |
| HEXPIRETIME key FIELDS numfields field [field....] | 返回哈希字段的过期时间(Unix时间戳,秒) |
| HGET key field | 返回哈希中指定字段的值 |
| HGETALL key | 返回哈希中所有字段和值 |
| hset key field value | 设置哈希键中指定字段的值,Redis 4.0.0+支持多字段操作 |
| hmset key field value [field value…] | 为哈希键设置多个字段和值 |
| hlen key | 获取哈希键中字段的数量 |
| hmget key field [field…] | 获取哈希键中多个指定字段的值 |

使用场景
- 存储对象(如用户信息、商品信息等)
- 购物车(字段为商品ID,值为数量、选中状态等)
- 对象属性频繁/单独属性更新
列表(List)
功能说明
有序元素集合(保持元素插入顺序),支持双向操作,底层采用双端链表/ziplist实现。
常用指令
可通过 Help @list 查看完整常用指令及详细解释。

关键指令说明
lpush key value1 value2 value3:从列表左侧插入元素,插入后列表为[value3, value2, value1]rpush key value4 value5:从列表右侧插入元素,插入后列表为[value3, value2, value1, value4, value5]
使用场景
- 消息队列(Lpush + BRpop:左侧插入,右侧弹出,无元素时阻塞)
- 最新消息/动态列表(如朋友圈、通知列表等)
- 任务队列
集合(Set)
功能说明
无序、唯一元素的集合,支持高效的集合间运算(差集、交集、并集等)。
常用指令
可通过 Help @set 查看完整常用指令。

特性说明
无序集合,不支持索引访问,元素唯一不可重复。
使用场景
- 标签管理(如文章标签、商品分类标签)
- 朋友圈点赞和取消点赞(利用元素唯一性)
- 共同关注/共同好友(集合交集运算)
- 抽奖(随机删除元素)
有序集合(Sorted Set)
功能说明
存储唯一元素的有序集合,每个成员关联一个double型权重分数,成员按分数排序。
常用指令
| 命令 | 核心作用 |
|---|---|
| ZADD | 向zset中添加元素(带分数) |
| ZRANGE | 按分数升序获取指定范围元素 |
| ZREVRANGE | 按分数降序获取指定范围元素 |
| ZSCORE | 获取指定元素的分数 |
| ZCARD | 获取zset中元素总数 |
| ZREM | 删除zset中的指定元素 |
| ZINCRBY | 给指定元素的分数增减数值 |
| ZRANK | 获取元素的升序排名 |
| ZREVRANK | 获取元素的降序排名 |
使用场景
- 各种排行榜(如销量排行、积分排行、人气排行等)
- 范围查询(按分数区间筛选成员)
- 优先队列(按分数优先级处理任务)
基数统计(HyperLogLog)
功能说明
用于基数估算(不重复元素计数),具有极低的内存占用,牺牲少量精度换取高效存储。
常用指令
可通过 Help @hyperloglog 查看完整常用指令。

使用场景
- 大规模UV统计(用户访问量,同一用户多次访问仅计1次)
- 独立IP统计
- 有一定误差容忍度的去重计数
位存储(Bitmap)
功能说明
基于String的位操作,极度节省空间,每个元素仅占用1个bit(8bit=1字节)。
常用指令
可通过 help @bitmap 查看完整常用指令。

使用场景
- 用户在线状态(1表示在线,0表示离线)
- 签到系统(辅助存储,如每月签到记录用31个bit表示)
地理位置(Geo)
功能说明
用于存储和操作地理位置信息,底层基于Sorted Set实现。
常用指令
可通过 help @geo 查看完整常用指令,核心指令如下:

使用场景
- 附近的人/酒店/商家等(按地理位置筛选)
- 距离计算(如网约车里程计算、外卖配送距离估算)
- 地理围栏(如限定某区域内的用户参与活动)
流(Stream)
功能说明
消息队列的增强版,提供更完善的消息存储、消费确认、分组消费等功能,可结合RabbitMQ、Kafka等消息中间件使用。
使用场景
- 高可靠性消息队列(需持久化、消费确认的场景)
- 日志流存储与消费
- 分布式系统间的异步通信
常用数据类型总结
在上述Redis数据类型中,String(字符串)和Hash(哈希)是最常用的两种,覆盖了大部分日常开发场景;其他数据类型则针对特定场景提供高效解决方案,可根据业务需求灵活选择。

浙公网安备 33010602011771号