摘要:
一、quicklist简介 为什么说quicklist是“二合一”呢?如果你看过STL中的deque的实现,就会知道deque是由一个map中控器和一个数组组成的数据结构,它既具有链表头尾插入便捷的优点,又有数组连续内存存储,支持下标访问的优点。Redis中是采用sdlist和ziplist来实现q 阅读全文
摘要:
在菜鸟教程自学了redis,总想着像Mysql一样,在C/C++中进行对接。于是查询了一些资料,最后找到了hiredis。然而直接用它的话,难免有点不方便。于是,对其进行封装。 hiredis直接去git上克隆,地址:https://github.com/redis/hiredis。 下载好之后,由 阅读全文
摘要:
redis中压缩列表ziplist相关的文件为:ziplist.h与ziplist.c 压缩列表是redis专门开发出来为了节约内存的内存编码数据结构。源码中关于压缩列表介绍的注释也写得比较详细。 一、数据结构 压缩列表的整体结构如下 1 /* 2 <zlbytes> <zltail> <zllen 阅读全文
摘要:
redis中整数集合intset相关的文件为:intset.h与intset.c intset的所有操作与操作一个排序整形数组 int a[N]类似,只是根据类型做了内存上的优化。 一、数据结构 1 /** 2 * 整型有序集合intset 3 */ 4 typedef struct intset 阅读全文
摘要:
redis中并没有专门给跳跃表两个文件。在5.0.2的版本中,结构体的声明与定义、接口的声明在server.h中,接口的定义在t_zset.c中,所有开头为zsl的函数。 一、数据结构 单个节点: 1 /** 2 * ZSETs use a specialized version of Skipli 阅读全文
摘要:
redis中字典相关的文件为:dict.h与dict.c 与其说是一个字典,道不如说是一个哈希表。 一、数据结构 1.1 dictEntry结构体 1 /** 2 * dictEntry是一个kv对的单向链表,其中v是一个联合体,支持数字,或者是指向一块内存的指针。 3 */ 4 typedef s 阅读全文
摘要:
redis中双向链表相关的文件为:adlist.h与adlist.c 一、数据结构 redis里定义的双向链表,与普通双向链表大致相同 1.1 单个节点结构 1 /* Node, List, and Iterator are the only data structures used current 阅读全文
摘要:
redis中动态字符串sds相关的文件为:sds.h与sds.c 一、数据结构 redis中定义了自己的数据类型"sds",用于描述 char*,与一些数据结构 1 typedef char *sds; 2 3 /* Note: sdshdr5 is never used, we just acce 阅读全文
摘要:
1、Redis简介: Redis是一种数据库。能够存储数据、管理数据的一种软件。 2、数据库应用的发展历程: 单机数据库时代:一个应用,一个数据库实例 缓存(Memcached,存放少量的经常使用的数据)、水平切分时代(把一个表或多个较大的表存放在一个单独的数据库中) 读写分离时代(需要同步机制,类 阅读全文
摘要:
SO_LINGER SO_LINGER选项用于控制close系统调用在关闭TCP连接时的行为。默认情况下,当我们使用close系统调用来关闭一个socket时,close将立即返回,TCP模块负责把该socket对应的TCP发送缓冲区中残留的数据发送给对方。 设置(获取)SO_LINGER选项的值时 阅读全文