小新是也
小新是也
全部文章
分类
Redis(10)
造轮子系列之RPC(9)
归档
标签
去牛客网
登录
/
注册
小新是也的博客
全部文章
(共19篇)
Redis 源码解析 1:数据库 redisDb
本文的分析都是基于 Redis 6.0 版本源码 redis 6.0 源码:https://github.com/redis/redis/tree/6.0 服务器中的数据库 Redis 服务器将绝大部分的信息都保存在 server.h/redisServer。redis 的数据是保存在 re...
2021-09-10
0
430
Redis 源码解析 2:Redis 对象 redisObject
在 Redis 中,有五大数据类型,都统一封装成了一个数据类型:redisObject。定义如下: typedef struct redisObject { unsigned type:4; // 类型 unsigned encoding:4; // 编码 unsi...
2021-09-10
0
348
Redis 源码解析 3:字符串 SDS
在 Redis 中,字符串都用自定义的结构简单动态字符串(Simple Dynamic Strings,SDS)。 Redis 中使用到的字符串都是用 SDS,例如 key、string 类型的值、sorted set 的 member、hash 的 field 等等等等。。。 数据结构 旧版本...
2021-09-10
0
353
Redis 源码解析 4:字典 dict
Redis 中,字典是基础结构。Redis 数据库数据、过期时间、哈希类型都是把字典作为底层结构。 字典的结构 哈希表 哈希表的实现代码在:dict.h/dictht,Redis 的字典用哈希表的方式实现。 typedef struct dictht { // 哈希表数组,俗...
2021-09-10
0
399
Redis 源码解析 5:压缩列表 ziplist
压缩列表是 ZSET、HASH和 LIST 类型的其中一种编码的底层实现,是由一系列特殊编码的连续内存块组成的顺序型数据结构,其目的是节省内存。 ziplist 的结构 外层结构 下图展示了压缩列表的组成: 各个字段的含义如下: zlbytes:是一个无符号 4 字节整数,保存着 z...
2021-09-10
0
405
Redis 源码解析 6:五大数据类型之字符串
前文 Redis 设计与实现 2:Redis 对象 说到,五大数据类型都会封装成 RedisObject。 typedef struct redisObject { unsigned type:4; // 类型 unsigned encoding:4; // 编码 ...
2021-09-10
0
423
Redis 源码解析 7:五大数据类型之列表
列表对象有 3 种编码:ziplist、linkedlist、quicklist。 ziplist 和 linkedlist 是 3.2 版本之前的编码。 quicklist 是 3.2 版本新增的编码,ziplist 和 linkedlist 在 3.2 版本及后续版本将不再是列表对象的编...
2021-09-10
0
369
Redis 源码解析 8:五大数据类型之哈希
哈希对象的编码有两种:ziplist、hashtable。 编码一:ziplist ziplist 已经是我们的老朋友了,它一出现,那肯定就是为了节省内存啦。那么哈希对象是怎么用 ziplist 存储的呢? 每次插入键值对的时候,在 ziplist 列表末尾,挨着插入 field 和 value...
2021-09-10
0
439
Redis 源码解析 9:五大数据类型之集合
集合对象的编码有两种:intset 和 hashtable 编码一:intset intset 的结构 整数集合 intset 是集合底层的实现之一,从名字就可以看出,这是专门为整数提供的集合类型。 其结构定义如下,在 intset.h: typedef struct intset { ...
2021-09-10
0
318
Redis 源码解析 10:五大数据类型之有序集合
有序集合 sorted set (下面我们叫zset 吧) 有两种编码方式:压缩列表 ziplist 和跳表 skiplist。 编码一:ziplist zset 在 ziplist 中,成员(member)和分数(score)是挨在一起的,元素按照分数从小到大存储。 举个例子,我们用以下命令...
2021-09-10
0
652
首页
上一页
1
2
下一页
末页