redis学习之十集合对象
之前相关联的文章:
redis学习之一SDS
redis学习之二双端链表
redis学习之三字典
redis学习之四skiplist
redis学习之五ziplist
redis学习之六对象
redis学习之七字符串对象
redis学习之八列表对象
redis学习之九哈希对象
先再看一下redisObject的定义:
typedef struct redisObject{
//类型
unsigned type:4;
//编码
unsigned encoding:4;
//lru缓存淘汰机制信息
unsigned lru:LRU_BITS;
//引用计数器
int refcount;
//指向底层实现数据结构的指针
void *ptr;
}robj;
【redis学习之十集合对象】集合对象的编码可以是intset或hashtable。当同时满足下面两个条件时会使用intset,不满足时使用hashtable:
- 保存的所有元素都是整数。
- 只在的元素数量不超过512个(可以通过set-max-intset-entries配置进行调整)
redis> SADD numbers 1 3 5
(integer) 3
下面是intset编码存储的格式:
文章图片
当执行了下面命令后:
redis> SADD test "apple" "cherry" "yes"
(integer) 3
下面是hashtable编码存储的格式:
文章图片
参考的文章有:
黄健宏的《Redis设计与实现》一书
推荐阅读
- 由浅入深理解AOP
- 继续努力,自主学习家庭Day135(20181015)
- python学习之|python学习之 实现QQ自动发送消息
- 一起来学习C语言的字符串转换函数
- 定制一套英文学习方案
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 《深度倾听》第5天──「RIA学习力」便签输出第16期
- 如何更好的去学习
- 【韩语学习】(韩语随堂笔记整理)
- 焦点学习田源分享第267天《来访》