摘要: redis源码分析——4、压缩列表ziplist实现 一、存储结构 ziplist: 内存布局 ​ 各字段含义 zlbytes:压缩列表的字节长度,占4个字节,因此压缩列表最长(2^32)-1字节; zltail:压缩列表尾元素相对于压缩列表起始地址的偏移量,占4个字节; zllen:压缩列表的元素数目,占两个字节;那么当压缩列表的元素数目超过(2^1 阅读全文
posted @ 2021-12-28 23:42 毛毛and西西 阅读(126) 评论(0) 推荐(0)
摘要: redis源码分析——3、简单动态字符串 一、相关定义 sds的定义 typedef char *sds; sdshdr的定义 /* Note: sdshdr5 is never used, we just access the flags byte directly. * However is here to document the l 阅读全文
posted @ 2021-09-22 23:45 毛毛and西西 阅读(92) 评论(0) 推荐(0)
摘要: redis源码分析——2、读写应答 一、读回调 客户端的消息处理循环 有上一节可知,redis通过epoll来检测是否有客户端接入,一旦有请求,则会调用acceptTcpHandler,然后再调用createClient将fd和client对应起来,最后挂在到全局的server.clients链表上面。在createClient里面又 阅读全文
posted @ 2021-09-22 23:39 毛毛and西西 阅读(77) 评论(0) 推荐(0)
摘要: redis源码分析——1、网络框架 一、 核心数据结构 ConnectionType, ConnectionType定义了网络连接的接口,包含read、write等,具体定义如下。 typedef struct ConnectionType { void (*ae_handler)(struct aeEventLoop *el, in 阅读全文
posted @ 2021-09-22 23:37 毛毛and西西 阅读(142) 评论(0) 推荐(0)