Redis 设计与实现
原书地址:
http://www.redisbook.com/en/latest/
第一部分:内部数据结构
Redis 和其他很多 key-value 数据库的不同之处在于, Redis 不仅支持简单的字符串键值对, 它还提供了一系列数据结构类型值, 比如列表、哈希、集合和有序集, 并在这些数据结构类型上定义了一套强大的 API 。
通过对不同类型的值进行操作, Redis 可以很轻易地完成其他只支持字符串键值对的 key-value 数据库很难(或者无法)完成的任务。
在 Redis 的内部, 数据结构类型值由高效的数据结构和算法进行支持, 并且在 Redis 自身的构建当中, 也大量用到了这些数据结构。
这一部分将对 Redis 内存所使用的数据结构和算法进行介绍。
第二部分:内存映射数据结构
虽然内部数据结构非常强大, 但是创建一系列完整的数据结构本身也是一件相当耗费内存的工作, 当一个对象包含的元素数量并不多, 或者元素本身的体积并不大时, 使用代价高昂的内部数据结构并不是最好的办法。
为了解决这一问题, Redis 在条件允许的情况下, 会使用内存映射数据结构来代替内部数据结构。
内存映射数据结构是一系列经过特殊编码的字节序列, 创建它们所消耗的内存通常比作用类似的内部数据结构要少得多, 如果使用得当, 内存映射数据结构可以为用户节省大量的内存。
不过, 因为内存映射数据结构的编码和操作方式要比内部数据结构要复杂得多, 所以内存映射数据结构所占用的 CPU 时间会比作用类似的内部数据结构要多。
这一部分将对 Redis 目前正在使用的两种内存映射数据结构进行介绍。
第三部分:Redis 数据类型
既然 Redis 的键值对可以保存不同类型的值, 那么很自然就需要对键值的类型进行检查以及多态处理。
为了让基于类型的操作更加方便地执行, Redis 创建了自己的类型系统。
在这一部分, 我们将对 Redis 所使用的对象系统进行了解, 并分别观察字符串、哈希表、列表、集合和有序集类型的底层实现。
第四部分:功能的实现
除了针对单个键值对的操作外, Redis 还提供了一些同时对多个键值对进行处理的功能, 比如事务和 Lua 脚本。
另外, 一些辅助性的功能, 比如慢查询, 以及一些和数据库无关的功能, 比如订阅与发布, 我们也会经常用到。
通过理解这些功能的底层实现, 我们可以更有效地使用它们。
这一部分将对这些功能进行介绍。
第五部分:内部运作机制
以下章节将对 Redis 最底层也最隐蔽的模块进行探讨:
- Redis 如何表示一个数据库?数据库操作是如何实现的?
- Redis 如何进行持久化? RDB 模式和 AOF 模式有什么区别?
- Redis 如何处理输入命令?它又是如何将输出返回给客户端的?
- Redis 服务器如何初始化?传入服务器的命令又是以什么方法执行的?
以上的这些问题,都是这一部分要解答的。
相关推荐
redis设计与实现 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,...
Redis 设计与实现.mobi
自己在学习中补全了比较重要的章节的详细书签,有利于大家复习使用
高可用可扩展集群化Redis设计与实现_闫明.caj
**Redis设计与实现** Redis,全称Remote Dictionary Server,是一个高性能的键值数据库,由Salvatore Sanfilippo创建。这本书《Redis设计与实现》由黄健宏撰写,深入浅出地介绍了Redis的核心原理和实际应用,对于...
Redis 设计与实现(第二版).CHM
在中文圈,黄建宏先生所著的《Redis设计与实现》是一本广受好评的Redis学习书籍。这本书深入剖析了Redis的内部工作机制,帮助读者理解其设计原理和实现细节。现在,我们有了一份与该书配套的Redis 3.0中文注释版源码...
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis 和其他很多 key-value 数据库的不同之处在于,Redis 不仅支持简单的字符串键值对,它 还提供了一系列数据结构类型值,比如列表、哈希、集合和有序集,并在这些数据结构类型上 定义了一套强大的 API 。 通过...
### Redis设计与实现原理及运作机制 #### 一、内部数据结构 Redis 是一款高性能的键值存储系统,其高效性很大程度上得益于内部使用的多种高效数据结构。这些数据结构不仅支持Redis提供的各种复杂数据类型,同时也...
本资料包包含了《Redis命令参考手册完整版.pdf》和《Redis设计与实现+第1版(黄健宏).pdf》,旨在帮助读者深入理解和掌握Redis的使用和设计原理。 《Redis命令参考手册完整版.pdf》是学习Redis操作的基础,涵盖了...
Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,且Redis通过提供多种键值数据类型来适应不同场景下的...
Redis是一款高性能的键值存储系统,广泛应用于缓存、数据库、消息队列等多个场景。它以其高效的内存管理和...提供的两份PDF文档《redis设计与实现》和《redisbook》应该会详细阐述这些主题,为深入研究提供宝贵的资源。
【Redis学习笔记】基于《Redis设计与实现》的深度解析 Redis是一款高性能的键值存储系统,被广泛应用于缓存、消息队列、分布式锁等场景。本笔记将结合《Redis设计与实现》这本书的内容,深入探讨Redis的基础知识,...
Redis 设计与实现,带目录扫描完整清晰版
07.Redis设计与实现.xmind
Redis设计与实现知识导图