
【曳凡】- Redis技术栈
学习redis内容
曳凡
这个作者很懒,什么都没留下…
展开
-
redis源码分析八--从客户端发送set命令后看服务端的执行流程上
1、Redis服务端的执行流程Redis程序分为客户端和服务端,之间通信是通过socket来传递指令信息,这里有一个问题就是我客户端发送一个set命令后服务器会做哪一些操作呢?具体操作语句见下图这里我设置了一个字符串number值为12306传递给Redis服务器端来进行保存,服务器端是如何实时监听我们的发送指令,并且如何解析的呢?首先我给出服务器端的调用流程图如下首先服务器端在启动时...原创 2020-03-31 21:56:14 · 399 阅读 · 0 评论 -
redis源码分析七--从redisservice启动分析redis的事件机制
1、redis事件介绍Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件文件事件:Redis服务器通过套接字与客户端(或者其他Redis服务器进行连接),而文件事件就是服务器对套接字操作的抽象。服务器与客户端的通信会产生相应的文件事件,而服务器则通过监听并处理这些事件来完成一系列网络通信操作。时间事件:Redis服务器中的一些操作(比如serverCron函数)需要在给定的时...原创 2020-03-27 21:59:51 · 464 阅读 · 0 评论 -
redis源码分析六--压缩列表
文章目录1、压缩列表的特点2、压缩列表的内存布局1、压缩列表的特点压缩列表是一种为节约内存而开发的顺序型数据结构。压缩列表被用作列表键和哈希键的底层实现之一。压缩列表可以包含多个节点,每个节点可以保存一个字节数组或者整数值。添加新节点到压缩列表, 或者从压缩列表中删除节点, 可能会引发连锁更新操作, 但这种操作出现的几率并不高2、压缩列表的内存布局上图就是压缩列表的布局情况...原创 2020-03-25 13:44:38 · 274 阅读 · 0 评论 -
redis源码分析五--整数集合
文章目录1、整数集合介绍2、整数集合的实现1、整数集合介绍整数集合适用范围整数集合(inset)是集合键的底层实现之一。当一个集合只包含整数数值元素并且这个结合的个数不是很多的时候,Redis就会使用整数集合来作为集合键的底层实现。整数集合的特点1、整数集合是有序的2、整数集合是不重复的3、整数集合只能保存整数且必须为正数或者02、整数集合的实现整数集合添加元素的的过程介绍是否...原创 2020-03-19 22:05:16 · 310 阅读 · 0 评论 -
Redis源码分析一--跳跃表实现
1、跳跃表结构体typedef struct zskiplistNode { sds ele; // double score; //分值 struct zskiplistNode *backward; //后退指针 //层数 struct zskiplistLevel { struct zskiplistNode *forward;...原创 2020-03-11 13:47:25 · 427 阅读 · 0 评论 -
redis源码分析三--双向链表adlist实现
1、adlist的结构typedef struct listNode { struct listNode *prev; //指向前一个节点 struct listNode *next; //指向后一个节点 void *value; //数据} listNode;typedef struct list { listNode *head; //头指针...原创 2020-03-08 18:38:58 · 170 阅读 · 0 评论 -
redis源码分析二--sds实现
1、sds头部的结构struct __attribute__ ((__packed__)) sdshdr8 { uint8_t len; //当前buf区的数据长度 uint8_t alloc; //当前buf区已经申请的空间长度,就是总长度减去头部和最后的\0 unsigned char flags; //现在只用了3位,表示当前的参数类型是8,16,32还是64位...原创 2020-03-08 13:50:58 · 210 阅读 · 0 评论 -
redis源码分析四--dict字典实现
1、dict结构typedef struct dictEntry { void *key; union { void *val; uint64_t u64; int64_t s64; double d; } v; //利用union共享同一块内存,可以保证空间的合理利用 struct dict...原创 2020-02-28 17:40:34 · 295 阅读 · 0 评论