Reids平常我们一般说的数据类型是:
- 字符串(String)
- 列表(List)
- 哈希(Hash)
- Set(集合)
- Sorted(有序集合)
Redis底层的数据实现
- 简单动态字符串 (为什么Reids不使用C原有的字符串)
- 双向列表
- 压缩列表
- 哈希表
- 跳跃表
- 整数数组
对应关系
简单说明
字符串
命令
内部编码实现
1.int 8字节的长整形
2.embstr 少于39字节的字符串
3.raw 大于39个字节的字符串
场景
1.缓存功能
哈希
命令
内部编码实现
1.ziplist(压缩列表)
ziplist使用更加紧凑的结构实现多个连续元素的连续存储,所以在节省内存方面更加优秀
使用条件:a.哈希类型个数小于hash-max-ziplist-entries配置(默认512)
b.所有值小于hash-max-ziplist-value配置(默认64)
2.hashtable(哈希表) 当无法满足ziplist的条件时,使用此实现
场景
1.用户属性信息的保存
列表
命令
内部编码
1.ziplist(压缩列表)
ziplist使用更加紧凑的结构实现多个连续元素的连续存储,所以在节省内存方面更加优秀
使用条件:a.列表的元素个数小于hash-max-ziplist-entries配置(默认512)
b.所有值小于hash-max-ziplist-value配置(默认64)
linkedlist(链表)
场景
1.消息队列
2.文章列表
集合
命令
内部编码
1.intset(整数集合)
a.set-max-intset-entries小于512(默认配置)
2.hashtable(哈希表)
场景
1.标签
有序集合
内部编码
1.ziplist(压缩列表)
a.zset-max-ziplist-entries小于128(默认配置)
b.zset-max-ziplist-value小于64字节(默认配置)
2.skiplist(跳跃表)