济南制作公司网站,西宁做网站君博美评,凡科网邮箱登陆,免费网页游戏助手1.7 Redis数据结构-RedisObject
Redis中的任意数据类型的键和值都会被封装为一个RedisObject#xff0c;也叫做Redis对象#xff0c;源码如下#xff1a;
1、什么是redisObject#xff1a; 从Redis的使用者的角度来看#xff0c;⼀个Redis节点包含多个database#xff…1.7 Redis数据结构-RedisObject
Redis中的任意数据类型的键和值都会被封装为一个RedisObject也叫做Redis对象源码如下
1、什么是redisObject 从Redis的使用者的角度来看⼀个Redis节点包含多个database非cluster模式下默认是16个cluster模式下只能是1个而一个database维护了从key space到object space的映射关系。这个映射关系的key是string类型⽽value可以是多种数据类型比如 string, list, hash、set、sorted set等。我们可以看到key的类型固定是string而value可能的类型是多个。 ⽽从Redis内部实现的⾓度来看database内的这个映射关系是用⼀个dict来维护的。dict的key固定用⼀种数据结构来表达就够了这就是动态字符串sds。而value则比较复杂为了在同⼀个dict内能够存储不同类型的value这就需要⼀个通⽤的数据结构这个通用的数据结构就是robj全名是redisObject。 Redis的编码方式
Redis中会根据存储的数据类型不同选择不同的编码方式共包含11种不同类型
编号编码方式说明0OBJ_ENCODING_RAWraw编码动态字符串1OBJ_ENCODING_INTlong类型的整数的字符串2OBJ_ENCODING_HThash表字典dict3OBJ_ENCODING_ZIPMAP已废弃4OBJ_ENCODING_LINKEDLIST双端链表5OBJ_ENCODING_ZIPLIST压缩列表6OBJ_ENCODING_INTSET整数集合7OBJ_ENCODING_SKIPLIST跳表8OBJ_ENCODING_EMBSTRembstr的动态字符串9OBJ_ENCODING_QUICKLIST快速列表10OBJ_ENCODING_STREAMStream流
五种数据结构
Redis中会根据存储的数据类型不同选择不同的编码方式。每种数据类型的使用的编码方式如下
数据类型编码方式OBJ_STRINGint、embstr、rawOBJ_LISTLinkedList和ZipList(3.2以前)、QuickList3.2以后OBJ_SETintset、HTOBJ_ZSETZipList、HT、SkipListOBJ_HASHZipList、HT