随笔分类 -  Redis

摘要:压缩列表(ziplist)是Redis为了节省内存而开发的,是由一系列特殊编码的连续内存块组成的顺序型数据结构,一个压缩列表可以包含任意多个节点(entry),每个节点可以保存一个字节数组或者一个整数值。 压缩列表的原理:压缩列表并不是对数据利用某种算法进行压缩,而是将数据按照一定规则编码在一块连续 阅读全文
posted @ 2021-11-11 09:37 kldx5092 阅读(150) 评论(0) 推荐(0)
摘要:整数集合(intset)是Redis用于保存整数值的集合抽象数据类型,它可以保存类型为int16_t、int32_t 或者int64_t 的整数值,并且保证集合中不会出现重复元素。 定义如下: typedef struct intset{ //编码方式 uint32_t encoding; //集合 阅读全文
posted @ 2021-11-11 09:33 kldx5092 阅读(46) 评论(0) 推荐(0)
摘要:跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其它节点的指针,从而达到快速访问节点的目的。具有如下性质: 1、由很多层结构组成; 2、每一层都是一个有序的链表,排列顺序为由高层到底层,都至少包含两个链表节点,分别是前面的head节点和后面的nil节点; 3、最底层的链表 阅读全文
posted @ 2021-11-11 09:31 kldx5092 阅读(285) 评论(0) 推荐(0)
摘要:字典又称为符号表或者关联数组、或映射(map),是一种用于保存键值对的抽象数据结构。字典中的每一个键 key 都是唯一的,通过 key 可以对值来进行查找或修改。C 语言中没有内置这种数据结构的实现,所以字典依然是 Redis自己构建的。 哈希表结构定义: typedef struct dictht 阅读全文
posted @ 2021-11-11 09:08 kldx5092 阅读(98) 评论(0) 推荐(0)
摘要:链表定义: typedef struct listNode{ //前置节点 struct listNode *prev; //后置节点 struct listNode *next; //节点的值 void *value; }listNode 通过多个 listNode 结构就可以组成链表,这是一个双 阅读全文
posted @ 2021-11-11 08:52 kldx5092 阅读(62) 评论(0) 推荐(0)
摘要:SDS 定义: struct sdshdr{ //记录buf数组中已使用字节的数量 //等于 SDS 保存字符串的长度 int len; //记录 buf 数组中未使用字节的数量 int free; //字节数组,用于保存字符串 char buf[]; } 用SDS保存字符串 “Redis”具体图示 阅读全文
posted @ 2021-11-11 08:50 kldx5092 阅读(47) 评论(0) 推荐(0)
摘要:1. 文件事件处理器 Redis基于Reactor模式开发了网络事件处理器,这个处理器被称为文件事件处理器。它的组成结构为4部分:多个套接字、IO多路复用程序、文件事件分派器、事件处理器。因为文件事件分派器队列的消费是单线程的,所以Redis才叫单线程模型。 2. 消息处理流程 文件事件处理器使用I 阅读全文
posted @ 2021-06-18 17:07 kldx5092 阅读(220) 评论(0) 推荐(0)