背景 因为想知道java中的关键字,对应的操作系统级别的api是啥,本来打算整理几个我知道的出来,但是,尴尬的是,我发现java里最重要的synchronized关键字,我就不知道它对应的api是什么。 redis中如何获取锁 在redis源码里,线程如果要进入一个同步区(只能单线程进入的代码块), ...
ziplist ziplist结构 ziplist的布局如下,所有的字符默认使用小端序保存: uint32_t :为一个无符号整数。保存了ziplist占用的字节数,包含zlbytes字段本身占用的4个字节。主要用于调整数据结构的大小。 uint32_t :最后一个entry的字节偏移量(非zlen ...
分类:
其他好文 时间:
2020-05-01 23:47:50
阅读次数:
75
edis源码的dict.c主要实现了基于hash表的操作,如增删改查,对哈希表大小的扩容和缩容,以及对哈希表的rehash和增量rehash等。在源码的dictScan函数中,非常巧妙精美地实现了对哈希表的迭代查找,非常建议去看一下。 添加描述 源码地址: "dict.c" "dict.h" ...
分类:
其他好文 时间:
2020-04-23 23:26:19
阅读次数:
79
文章导航 Redis源码系列的初衷,是帮助我们更好地理解Redis,更懂Redis,而怎么才能懂,光看是不够的,建议跟着下面的这一篇,把环境搭建起来,后续可以自己阅读源码,或者跟着我这边一起阅读。由于我用c也是好几年以前了,些许错误在所难免,希望读者能不吝指出。 "曹工说Redis源码(1) red ...
分类:
其他好文 时间:
2020-04-18 22:51:43
阅读次数:
72
为什么要阅读Redis源码? 主要原因就是『简洁』。如果你用源码编译过Redis,你会发现十分轻快,一步到位。其他语言的开发者可能不会了解这种痛,作为C/C++程序员,如果你源码编译安装过Nginx/Grpc/Thrift/Boost等开源产品,你会发现有很多依赖,而依赖本身又有依赖,十分痛苦。通常 ...
分类:
其他好文 时间:
2020-04-16 15:36:31
阅读次数:
67
一:概述 - Redis 源码版本为3.0.0. - Redis 集合命令请戳。 - OBJECT ENCODING key 查看数据底层类型实现。 二:集合对象的底层实现 - 编码方式 - 字符串对象共有两种编码方式 intset(整数集合) / hashtable(字典) - 编码方式的选择 - ...
分类:
其他好文 时间:
2020-04-13 13:51:38
阅读次数:
84
安装redis下载redis源码,并进行相关操作,如下:wgethttp://download.redis.io/releases/redis-3.2.3.tar.gz解压安装redis[root@redis~]#tarzxfredis-3.2.3.tar.gz解压完毕后,现在开始安装,如下:[root@redis~]#cdredis-3.2.3/[root@redisredis-3.2.3]#m
分类:
其他好文 时间:
2020-03-02 22:46:28
阅读次数:
83
环境OSredis版本防火墙和selinuxCentOS74.0.14关闭安装步骤安装前装备1.因为redis是用C编写的,所以需要安装gcc#yum-yinstallgcc2.下载redis源码包#wget-P/usr/local/src/http://download.redis.io/releases/redis-4.0.14.tar.gz编译安装#cd/usr/local/src/#tar
分类:
其他好文 时间:
2020-02-12 11:10:53
阅读次数:
84
redis中并没有专门给跳跃表两个文件。在5.0.7的版本中,结构体的声明与定义、接口的声明在server.h中,接口的定义在t_zset.c中,所有开头为zsl的函数。 一、数据结构 单个节点: typedef struct zskiplistNode { //key,唯一 sds ele; // ...
分类:
其他好文 时间:
2020-02-04 15:42:42
阅读次数:
53
redis中动态字符串sds相关的文件为:adlist.h与adlist.c 一、数据结构 redis里定义的双向链表,与普通双向链表大致相同 单个节点: 1 typedef struct listNode { 2 struct listNode *prev; 3 struct listNode * ...
分类:
其他好文 时间:
2020-01-25 19:33:02
阅读次数:
107