Redis
你回到了你的家
这个作者很懒,什么都没留下…
展开
-
Redis4-字典
一、字典的实现 Redis的字典使用哈希表作为底层实现,一个哈希表里面可以有多个哈希表节点,而每个哈希表节点就保存了字典中的一个键值对。 1.1 哈希表 Redis字典所使用的哈希表由dict.h/dictht结构定义: table属性是一个数组,数组中的每个元素都是一个指向dict.h/dictEntry结构的指针,每个dictEntry结构保存着一个键值对。size属性记录了哈希表的大小,也即是table数组的大小,而used属性则记录了哈希表目前已有节点(键值对)的数量。sizemask属性的值总是原创 2020-09-22 16:49:58 · 92 阅读 · 0 评论 -
Redis3-链表
一、链表和链表节点的实现 每个链表节点使用一个adlist.h/listNode结构来表示: 多个listNode可以通过prev和next指针组成双端链表,如下图所示: 虽然仅仅使用多个listNode结构就可以组成链表,但使用adlist.h/list来持有链表的话,操作起来会更方便: list结构为链表提供了表头指针head、表尾指针tail,以及链表长度计数器len,而dup、free和match成员则是用于实现多态链表所需的类型特定函数: dup函数用于复制链表节点所保存的值 free函数原创 2020-09-22 16:24:22 · 135 阅读 · 0 评论 -
Redis2-简单动态字符串
除了用来保存数据库中的字符串值之外,SDS还被用作缓冲区(buffer):AOF模块中的AOF缓冲区,以及客户端状态中的输入缓冲区,都是由SDS实现的。 一、SDS的定义 每个sds.h/sdshdr结构表示一个SDS值: 上图表示了一个SDS实例: free属性的值为0,表示这个SDS没有分配任何未使用空间 len属性的值为5,表示这个SDS保存了一个五字节长的字符串 buf属性是一个char类型的数组,数组的前五个字节分别保存了’R’, ‘e’, ‘d’, ‘i’, ‘s’五个字符,而最后一...原创 2020-09-22 16:18:25 · 111 阅读 · 0 评论