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语法相同,实现自减功能

image

使用场景

  • 缓存信息
  • 计数器(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…] 获取哈希键中多个指定字段的值

image

使用场景

  • 存储对象(如用户信息、商品信息等)
  • 购物车(字段为商品ID,值为数量、选中状态等)
  • 对象属性频繁/单独属性更新

列表(List)

功能说明

有序元素集合(保持元素插入顺序),支持双向操作,底层采用双端链表/ziplist实现。

常用指令

可通过 Help @list 查看完整常用指令及详细解释。
image

关键指令说明

  • lpush key value1 value2 value3:从列表左侧插入元素,插入后列表为 [value3, value2, value1]
  • rpush key value4 value5:从列表右侧插入元素,插入后列表为 [value3, value2, value1, value4, value5]

使用场景

  • 消息队列(Lpush + BRpop:左侧插入,右侧弹出,无元素时阻塞)
  • 最新消息/动态列表(如朋友圈、通知列表等)
  • 任务队列

集合(Set)

功能说明

无序、唯一元素的集合,支持高效的集合间运算(差集、交集、并集等)。

常用指令

可通过 Help @set 查看完整常用指令。
image

特性说明

无序集合,不支持索引访问,元素唯一不可重复。

使用场景

  • 标签管理(如文章标签、商品分类标签)
  • 朋友圈点赞和取消点赞(利用元素唯一性)
  • 共同关注/共同好友(集合交集运算)
  • 抽奖(随机删除元素)

有序集合(Sorted Set)

功能说明

存储唯一元素的有序集合,每个成员关联一个double型权重分数,成员按分数排序。

常用指令

命令 核心作用
ZADD 向zset中添加元素(带分数)
ZRANGE 按分数升序获取指定范围元素
ZREVRANGE 按分数降序获取指定范围元素
ZSCORE 获取指定元素的分数
ZCARD 获取zset中元素总数
ZREM 删除zset中的指定元素
ZINCRBY 给指定元素的分数增减数值
ZRANK 获取元素的升序排名
ZREVRANK 获取元素的降序排名

使用场景

  • 各种排行榜(如销量排行、积分排行、人气排行等)
  • 范围查询(按分数区间筛选成员)
  • 优先队列(按分数优先级处理任务)

基数统计(HyperLogLog)

功能说明

用于基数估算(不重复元素计数),具有极低的内存占用,牺牲少量精度换取高效存储。

常用指令

可通过 Help @hyperloglog 查看完整常用指令。
image

使用场景

  • 大规模UV统计(用户访问量,同一用户多次访问仅计1次)
  • 独立IP统计
  • 有一定误差容忍度的去重计数

位存储(Bitmap)

功能说明

基于String的位操作,极度节省空间,每个元素仅占用1个bit(8bit=1字节)。

常用指令

可通过 help @bitmap 查看完整常用指令。
image

使用场景

  • 用户在线状态(1表示在线,0表示离线)
  • 签到系统(辅助存储,如每月签到记录用31个bit表示)

地理位置(Geo)

功能说明

用于存储和操作地理位置信息,底层基于Sorted Set实现。

常用指令

可通过 help @geo 查看完整常用指令,核心指令如下:
image

使用场景

  • 附近的人/酒店/商家等(按地理位置筛选)
  • 距离计算(如网约车里程计算、外卖配送距离估算)
  • 地理围栏(如限定某区域内的用户参与活动)

流(Stream)

功能说明

消息队列的增强版,提供更完善的消息存储、消费确认、分组消费等功能,可结合RabbitMQ、Kafka等消息中间件使用。

使用场景

  • 高可靠性消息队列(需持久化、消费确认的场景)
  • 日志流存储与消费
  • 分布式系统间的异步通信

常用数据类型总结

在上述Redis数据类型中,String(字符串)和Hash(哈希)是最常用的两种,覆盖了大部分日常开发场景;其他数据类型则针对特定场景提供高效解决方案,可根据业务需求灵活选择。

posted @ 2026-01-14 13:36  Jing61  阅读(2)  评论(0)    收藏  举报