redis设计与实现读书笔记

本文深入剖析Redis内部实现原理,包括其采用的数据结构如简单动态字符串(SDS)、链表及字典等;探讨了数据库持久化的两种方式——RDB和AOF;并介绍了Redis在多机环境下的复制、集群解决方案以及一些高级特性如发布与订阅、事务处理等。
摘要由CSDN通过智能技术生成

目录

第一部分 数据结构与对象

第1章 引 言

第2章 简单动态字符串

第3章 链表

第4章 字典

第5章 跳跃表

第6章 整数集合

第7章 压缩列表

第8章 对象

第二部分 单级数据库的实现

第9章 数据库

第10章 RDB持久化

第11章 AOF持久化

第12章 事件

第13章 客户端

第14章 服务器

第三部分 多机数据库的实现

第15章 复制

第16章 Sentinel

第17章 集群

第四部分 独立功能的实现

第18章 发布与订阅

第19章 事务

第20章 lua脚本

第21章 排序

第22章 二进制位数组

第23章 慢查询日志

第24章监视器

第一部分 数据结构与对象

第1章 引 言

1.数据库的键总是一个字符串对象,而数据库的值可以是字符串,列表,集合,有序集合,哈希任意一种。

第2章 简单动态字符串(SDS,Simple dynamic string)

1.C字符串与简单动态字符串SDS的内存结构:

2.C字符串与简单动态字符串SDS的区别:

C字符串SDS原因
获取字符串长度的复杂度为O(N)获取字符串长度的复杂度为O(1)由于SDS记录了长度信息
API是不安全的,可能造成缓冲区溢出API是安全的,不会造成缓冲区溢出由于SDS后面有free空间,C字符串都是一个挨着一个的
修改字符串长度N次,必然进行N次内存重新分配修改字符串N次,最多进行N次内存重新分配由于SDS通过利用free空间,实现了空间预分配和惰性空间分配优化策略
只能保存文本数据可以保存文本或者二进制数据由于SDS东西怎么存的就是怎么拿出来的,存的就是二进制
可以使用所有<string.h>库中的函数可以使用部分<string.h>库中的函数由于SDS可以重用其中的部分功能
   

第3章 链表

1.链表的结构

其中:

dup用于复制链表节点所保存的值

free用于释放链表节点所保存的值

match用于匹配值是否相等

2.链表的特性:

双向链表,无环,带有表头指针和表尾指针,带有长度,多态(链表节点使用void*指针保存节点的值,并且可以通过list结构的dup,free,match三个属性为节点值设定类型特定函数,所以,链表可以用于保存各种不同类型的值)


第4章 字典

1.字典的结构以及相关部分的解释:

第5章 跳跃表

第6章 整数集合

第7章 压缩列表

第8章 对象

第二部分 单级数据库的实现

第9章 数据库

第10章 RDB持久化

第11章 AOF持久化

第12章 事件

第13章 客户端

第14章 服务器

第三部分 多机数据库的实现

第15章 复制

第16章 Sentinel

第17章 集群

第四部分 独立功能的实现

第18章 发布与订阅

第19章 事务

第20章 lua脚本

第21章 排序

第22章 二进制位数组

第23章 慢查询日志

第24章监视器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值