Redis 是以键值对(key-value)储存数据的,这里的数据类型指的是值的数据类型,而键都是 String
常见的有 5 种:
- String(字符串)
- 缓存对象、常规计数、分布式 session、分布式锁
- List(列表)
- 栈和队列、消息队列(有两个问题:生产者需要自行实现全局唯一 ID;不能以消费组形式消费数据)
- Hash(哈希、散列)
- 缓存对象、Map(映射)和 Dict(字典)
- Set(集合)
- 无序且不可重复、聚合计算(并集、交集、差集)
- Zset(有序集合)
- 排序
随着 Redis 版本的更新,后面又支持了 4 种数据类型:
- BitMap(位图):2.2 版新增
- 二值状态统计
- HyperLogLog(基数统计):2.8 版新增
- 海量数据基数统计
- GEO(地理信息):3.2 版新增
- 地理位置信息
- Stream(流):5.0 版新增
- 消息队列
键值对
Redis 使用一个「 哈希表 」保存所有键值对,哈希表的最大好处就是通过键来查找和新增的时间复杂度是 O(1)
键是 String,值是 redisObject
type
:标识该对象是什么类型的对象(String、 List、Hash、Set、Zset 等)encoding
:标识该对象使用了哪种底层的数据结构(SDS、哈希表、跳表等)ptr
:指向底层数据结构的指针
Redis 键值对数据库全景图: