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
- 统计在线用户数
- 统计每天搜索词条数