1.string 操作
1)内部编码
int 8个字节的长整型
embstr 小于等于39个字节的字符串
raw 大于39个字节的字符串
2)使用场景
缓存功能
计数
共享session
限速
2.hash操作
1)内部编码
ziplist(压缩列表)
当哈希类型元素个数小于hash-max-ziplist-entries配置时(默认512个),同时所有值都是小于hash-max-ziplist-value配置时候(默认64字节),redis会使用ziplist作为哈希的内部实现
hashtable(哈希表)
当哈希类型无法满足ziplist的条件时,redis会使用hashtable作为内部实现,因为ziplist的读写效率会下降。而hashtable的读写时间复杂度为O(1)
2)使用场景
存储对象
3.list操作
1)内部编码
ziplist(压缩列表)
当列表元素个数小于list-max-ziplist-entries配置时(默认512个),同时所有值都是小于list-max-ziplist-value配置时候(默认64字节),redis会使用ziplist作为哈希的内部实现
linkedlist(链表)
当列表类型无法满足ziplist的条件时,redis会选用LinkedList.
quicklist
3.2版本提供的一个内部实现,简单来说它是以一个ziplist为节点的linkedlist,集合了ziplist和linkedlist的优势
2)使用场景
消息队列
文章列表
4.set操作
1)内部编码
intset(整数集合) :当集合中的元素都是整数且元素个数小于set-max-intset-entries(默认512个),redis会选用Intset来作为集合的内部实现,从而减少内存的使用
hashtable(哈希表):当集合类型无法满足Intset的条件时,会选用hashtable作为集合的内部实现
2)使用场景
兴趣爱好
共同兴趣等
5.zset操作
1)内部编码
ziplist(压缩列表)
当有序集合的元素个数小于zset-max-ziplist-entries配置(默认128个),同时每个元素的值都小于zset-max-ziplist-value配置(默认64字节)时,使用ziplist来作为有序集合的内部实现
skiplist(跳跃表)
当ziplist条件不满足的时候,有序集合会使用skiplist作为内部实现
2)使用场景
添加用户赞数
取消用户赞数
获取用户赞数最多的10个用户