Redis 中常用的数据类型:

  • String 字符串,最大 512MB
  • Set,集合交集,比如共同的好友
  • Sorted Set,实现排名
  • Hash,哈希,映射
  • List, Linked Lists,Redis 的 List 的实现是链表(跳表),这就意味插入比较快
  • Bitmap,二进制数组,典型场景存储 100 万用户登录状态
  • Redis HyperLogLog
  • Streams,消息队列

String

Redis 中的 String 使用 Simple Dynamic String (SDS)实现,可以保存文本数据,也可以保存二进制数据。SDS API 是安全的,不会造成缓冲区溢出。

使用场景:

  • 计数
  • 热门文章点赞数量

List

链表,双向链表。

使用场景:

  • 用户最近发表的状态,帖子等
  • 作为消息队列,Producer and Consumer

Hashes

Hash 是 String 类型的 field 和 value 映射。

使用场景:

  • 用户信息,商品信息等

Set

无序集合。可以实现交集、并集、差集等操作。

Unsorted set

场景:

  • 黑名单,白名单,用户集
  • 用户的好友
  • 共同的关注,共同的粉丝,共同的喜好

Sorted Set

有序的集合,权重参数,按 score 排序,还可以通过 score 范围获取列表。

跳表实现。

  • 最热门的内容
  • 排名

Bitmap

典型使用场景:

  • 记录 1000 万人的登录状态

基于 Bitmap 极低的时间和空间复杂度,在大数据标记等类似布隆过滤的场景有广泛的用武之地。以在线用户统计为例,设置用户 ID 为 offset,如果在线就设置为 1,不在线就设置为 0,使用 bitmap,1000W 用户只需要 1.2MB 的空间。

HyperLogLog

  • 统计注册 IP 数
  • 统计每日访问 IP 数
  • 统计页面实时 UV
  • 统计在线用户数
  • 统计每天搜索词条数

reference