![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Redis设计与实现
black_and_blue
这个作者很懒,什么都没留下…
展开
-
Redis 学习 ---- 3.链表 Linked List
链表结点使用一个adlist.h/listNode结构来表示:typedef struct listNode { struct listNode *prev; // 前置结点 struct listNode *next; // 后置结点 void *value; // 值}listNode;adlist.h/li原创 2016-03-17 10:52:30 · 271 阅读 · 0 评论 -
Redis 学习 ---- 9.数据库
9.1服务器中的数据库所有数据库都保存在服务器状态redis.h/redisServer的db数组中struct redisServer{ redisDb *db; // 保存着服务器中所有数据库 int dbnum; // 数据库数量}9.2切换数据库typedef struct redisClient{ redisDb *db; // 记录客户端当前正在使原创 2016-03-23 16:44:07 · 291 阅读 · 0 评论 -
Redis 学习 ---- 8.对象
Redis的对象系统内存回收机制:引用计数8.1 对象的类型与编码Redis中的每个对象都由一个redisObject结构表示:type、encoding、ptrtypedef struct redisObject{ unsigned type:4; unsigned encoding:4; void *ptr;}对象类型: REDI原创 2016-03-22 17:10:51 · 303 阅读 · 0 评论 -
Redis 学习 ---- 7.压缩列表
压缩列表(ziplist)是列表键和哈希键的底层实现之一。当一个列表键只包含少量列表项,并且每个列表项要么就是小整数值,要么就是长度比较短的字符串,那么Redis就会使用压缩列表来做列表键的底层实现。7.2压缩列表节点的构成每个节点可以保存一个字节数组或者一个整数值字节数组长度:63或16383或4294967295位整数值长度: 4、8、16、24、32、64位每个节点原创 2016-03-21 17:35:48 · 306 阅读 · 0 评论 -
Redis 学习 ---- 1.引言
内容来源于《Redis设计与实现》 作者黄健宏1.第一章: 数据结构与对象Redis数据库键值对(key-value pair) 都是由对象组成: 键总是一个字符串对象(string,object); 值可以是字符串对象、列表对象(list object)、哈希对象(hash object)、集合对象(set object)、有序集合原创 2016-03-17 10:26:07 · 244 阅读 · 0 评论 -
Redis 学习 ---- 6.整数集合
整数集合(intset)是Redis用于保存整数值的集合抽象数据结构,它可以保存类型为int16_t、int32_t、int64_t的整数值,并且无重复元素。原创 2016-03-19 17:03:51 · 242 阅读 · 0 评论 -
Redis 学习 ---- 5.跳跃表
和链表、字典等数据结构被广泛地应用在Redis内部不同,Redis只在俩个地方用到了跳跃表,一个是实现有序集合键,另一个是在集群结点中用作内部数据结构,除此之外,跳跃表在Redis里面没有其他用途。跳跃表(skiplist)是一种有序数据结构,他通过在每个结点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找在大部分情况下,跳跃表的原创 2016-03-17 17:29:19 · 255 阅读 · 0 评论 -
Redis 学习 ---- 4.字典
Redis字典所使用的哈希表由dict.h/dictht结构定义:typedef struct dictht{ dictEntry **table; // 哈希表数组 unsigned long size; // 大小 unsigned long sizemask; // 总是等于size-1、哈希表大小掩码,用于计算索引值 u原创 2016-03-17 11:38:25 · 329 阅读 · 0 评论 -
Redis 学习 ---- 2.SDS
内容来源于《Redis设计与实现》 作者黄健宏Redis数据库键值对(key-value pair) 都是由对象组成:键总是一个字符串对象(string,object);值可以是字符串对象、列表对象(list object)、哈希对象(hash object)、集合对象(set object)、有序集合对象(sorted set object)这五种对象中的一种简单动态字符串(si原创 2016-03-16 19:22:19 · 240 阅读 · 0 评论 -
Redis 学习 ---- 10.RDB持久化
10.1 RDB文件的创建和载入有俩个Redis命令可以用于生成RDB文件,一个是SAVE,另一个是BGSAVE。SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止。BGSAVE命令会派生出一个子金城关负责创建RDB文件,服务器进程继续处理命令请求。RDB文件的载入工作是在服务器启动时自动执行的,因为AOF文件的更新频率通常比RDB文件的更新频率高,原创 2016-03-25 15:50:34 · 1058 阅读 · 0 评论