Redis 数据类型及应用场景(图文讲解)

更新时间 2022-12-25 12:52:13

Redis 常用的 5 种数据类型

常见有 5 种数据类型,分别是 String 字符串、List 列表、Set 无需集合、Zset(Sorted Set 有序集合)、Hash 哈希:

Redis 支持的数据类型Redis 支持的数据类型

新版本新增的数据类型

后续随着 Redis 版本的更新,又另外支持了 4 种数据类型, 分别是 BitMap 位图、HyperLogLog(简称 HLL)、GEO、Stream:

Redis 新版本支持的数据类型Redis 新版本支持的数据类型

表格对比

数据类型说明内部实现应用场景
String不仅可以存字符串,也可以存数字(整数、浮点数)底层的数据结构实现主要是 int 和 SDS(简单动态字符串)。1、简单的键值对缓存
2、分布式锁
3、计数器:通过自增自减
4、会话缓存,如分布式 Session、Token 等
List列表1、3.2 版本之前底层数据结构是由双向链表或压缩列表实现
2、3.2 版本之后底层数据结构改成了 quicklist
1、消息队列(发布订阅功能)
Set无序并唯一的键值对集合底层数据结构是由哈希表或整数集合实现1、粉丝列表功能,通过交集、并集、差集的操作,比如交集可以实现共同关注的功能,可以把两个人的粉丝列表整一个交集
2、抽奖活动
Hash键值对形式的集合,value 值格式为 value=[{field1,value1},...{fieldN,valueN}], 特别适合存储对象1、7.0 版本之前底层数据结构为压缩列表或哈希表;
2、7.0 版本之后,数据结构为 listpack ;
1、缓存结构化的数据,比如一个对象
2、商城购物车数据
ZSet有序集合1、7.0 版本之前底层数据结构为压缩列表或跳表;
2、7.0 版本之后由 listpack 来实现;
1、排行榜功能,如获取排名前几名的用户
BitMap位图,是一串连续的二进制数组(0 和 1)用 String 类型作为底层数据结构实现的一种统计二值状态的数据类型1、签到统计
2、连续签到用户总数
HLL提供不精确的去重计数HyperLogLog 算法是一种非常巧妙的近似统计海量去重元素数量的算法1、海量数据基数统计的场景,比如百万级网页 UV 计数
GEO主要用于存储地理位置信息底层是 Sorted Set 集合类型1、附近的人功能
2、滴滴打车
3、附近的餐馆
Stream5.0 版本新增,专门为消息队列设计的数据类型 1、消息队列, 相比于基于 List 类型实现的消息队列,它有这两个特有的特性:自动生成全局唯一消息ID,支持以消费组形式消费数据。