Redis对象 UML类图
2022-03-06 22:43:38 0 举报
Reids 数据结构 URL类图
作者其他创作
大纲/内容
List 双端列表
+ head : listNode 表头节点+ tail : listNode 表尾节点- len : long 列表节点数量
+ dup(): void 节点复制函数- *free(): void 节点释放函数- match(): int 节点值对比函数
dictEntry
intset
- encoding: uint32_t : 类型特定函数- length : uint32_t 集合包含的元素数量- content[]: int8_t 元素的数组
encoding属性值
对应的底层数据结构
REDIS_ENCODING_INT
long类型的整数
REDIS_ENCODING_EMBSTR
embstr编码的简单动态字符串
REDIS_ENCODING_RAW
简单动态字符串
REDIS_ENCODING_HT
字典
REDIS_ENCODING_LINKEDLIST
双端链表
REDIS_ENCODING_ZIPLIST
压缩列表
REDIS_ENCODING_INTSET
整数集合
REDIS_ENCODING_SKIPLIST
跳跃表和字典
ListNode
+ prev : listNode 指向前节点- next : lsitNode 指向后节点- value: void 节点的值
dictht
ZsetObject
zskiplistNode
- level: zskiplistLevel : 节点层级- backward: zskiplistNode 后退指针- score double 分值- obj: robj 成员对象
zipList 压缩列表
- zlbytes : uint32_t 整个压缩表占用的字节数- ztail : uint32_t 最后一个元素距离压缩列表起始位置的偏移量 - zllen: uint32_t 元素个数- entryX: T[] 元素内容列表- zlend: uint8_t 把标志压缩列表的结束,值恒为 0xFF
编码
对象
REDIS_STRING
使用整数值实现的字符串对象
使用embstr编码的简单动态字符串实现的字符串对象
使用简单动态字符串实现的字符串对象
REDIS_LIST
使用压缩列表实现的列表对象
使用双端列表实现的列表对象
REDIS_HASH
使用压缩列表实现的哈希对象
使用字典实现的哈希对象
REDIS_SET
使用整数集合实现的集合对象
使用字典实现的集合对象
REDIS_ZSET
使用压缩列表实现的有序集合对象
使用跳跃表 和 字典实现的有序集合对象
dict
- type: dictType : 类型特定函数- privdata : 私有数据 (需要给函数用的参数)- ht[2]: dictht 哈希表- rehashidx: 重新hash标识
常量类型
对象名称
字符串对象
列表对象
哈希对象
集合对象
有序集合
sdshdr
- len : int 使用的字节数量- free: int 未使用的字节数量- buf[]: char 字节数组
entry
+ previous_entry_length : int<var> 前一个 entry 的字节长度- encoding: int<var> 元素类型编码- content: byte 元素内容
zskiplistLevel
+ forward: zskiplistNode 前进指针- span: int 跨度
redisObject(Redis对象)
- type : unsigned 4 对象的类型- encoding : unsigned 4 对象类型的编码- *ptr: void 指向底层实现数据结构的指针
zskiplist
- header: zskiplistNode : 类型特定函数- tail : zskiplistNode 集合包含的元素数量- level: int 层级数(最大的那个节点的层级)- length: int 跳跃表的长度
StringObject
SetObject
不同类型和编码的关系
字典 + 跳跃表
HashObject
ListObject

收藏

收藏
0 条评论
下一页