Redis的数据类型、特点及应用场景

Redis 支持多种数据类型,其中最核心的是五种基本数据类型:字符串(String)、哈希(Hash)、列表(List)、集合(Set) 和 有序集合(ZSet)。此外,还扩展支持如 Bitmap、GEO、Stream 等高级类型11官网。这些类型不仅满足多样化的业务需求,也因其高性能和原子性操作被广泛应用于缓存、计数、消息队列等场景。
1. 字符串(String)
- 特点:
- 最基础的数据类型,一个 key 对应一个 value。
- 支持文本、整数、浮点数甚至二进制数据(如图片)。
- 单个 value 最大可存储 512MB。
- 支持自增(
incr)、自减(decr)等原子操作。
- 内部编码优化:
- 小整数使用
int编码; - 短字符串(≤39字节)使用
embstr; - 长字符串使用
raw编码。
- 小整数使用
- 使用场景:
- 缓存:存储热点数据,如用户会话、页面内容。
- 计数器:文章阅读量、点赞数、库存统计4官网。
- 分布式锁:利用
SETNX实现资源互斥访问。 - 共享 Session:在分布式系统中统一管理用户登录状态。
2. 哈希(Hash)
- 特点:
- 一个 key 对应多个 field-value 对,适合存储对象。
- 可单独修改某个字段,节省网络开销。
- 底层编码为
ziplist(小对象)或hashtable(大对象)。
- 使用场景:
- 用户信息存储:如昵称、年龄、邮箱等属性统一管理11官网。
- 购物车设计:以用户 ID 为 key,商品 ID 为 field,数量为 value。
- 配置项缓存:集中管理应用配置,提升读取效率。
3. 列表(List)
- 特点:
- 有序、可重复的字符串集合。
- 支持从头部(
LPUSH)或尾部(RPUSH)插入元素。 - 底层由
quicklist实现(Redis 3.2+),结合了ziplist和双向链表的优点。
- 使用场景:
- 消息队列:实现简单的生产者-消费者模型。
- 最新动态:记录用户登录日志、操作历史11官网。
- 任务队列:异步处理耗时任务,如邮件发送、订单处理。
4. 集合(Set)
- 特点:
- 无序、不重复的字符串集合。
- 支持交集、并集、差集运算。
- 底层编码为
intset(纯整数小集合)或hashtable。
- 使用场景:
- 标签系统:标记用户兴趣,如“篮球”“电影”。
- 共同好友:通过交集计算两个用户的共同关注者。
- 抽奖去重:确保同一用户只能中奖一次11官网。
5. 有序集合(Sorted Set / ZSet)
- 特点:
- 在 Set 基础上为每个元素关联一个 score(分数),按 score 排序。
- 元素唯一,但 score 可重复。
- 支持范围查询(如 top N)。
- 使用场景:
- 实时排行榜:游戏积分榜、销售榜单。
- 延迟队列:将任务按执行时间作为 score,定时拉取。
- 时间轴数据:按时间排序展示动态或日志11官网。
6. 高级数据类型(简要)


浙公网安备 33010602011771号