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

image

 

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. 高级数据类型(简要)

image

 

posted @ 2026-02-08 19:53  ConfidentLiu  阅读(36)  评论(0)    收藏  举报