.. Redis 设计与实现 documentation master file, created by sphinx-quickstart on Fri Apr 18 21:53:39 2014. You can adapt this file completely to your liking, but it should at least contain the root `toctree` directive. Redis设计与实现 ======================================= .. image:: image/cover.png :align: left 欢迎来到《Redis设计与实现》的读者服务网站! 《Redis设计与实现》一书全面而完整地讲解了 Redis 的内部运行机制, 对 Redis 的大多数单机功能以及所有多机功能的实现原理进行了介绍, 展示了这些功能的核心数据结构以及关键的算法思想。 通过阅读本书, 读者可以快速、有效地了解 Redis 的内部构造以及运作机制, 从而学会如何更高效地使用 Redis 。 你可以通过访问本站, 或者关注本书作者的\ `微博 <https://weibo.com/u/3219474004>`_\ 、\ `twitter <https://twitter.com/huangzworks>`_\ 和\ `豆瓣 <https://www.douban.com/people/273300993>`_\ 来获知本书的最新消息。 购买 --------- 购买本书请访问: `京东商城 <http://item.jd.com/11486101.html>`_ 、 `当当网 <http://product.dangdang.com/23501734.html>`_ , 另外本书的 `多看阅读版本 <http://www.duokan.com/book/53962>`_ 和 `豆瓣阅读版本 <http://read.douban.com/ebook/7519526/>`_ 也已有售。 .. 另外, 本书还提供了作者签名版可供购买, 请访问 :doc:`signed` 页面了解更多信息。 内容与特色介绍 ----------------- 本书介绍了以下内容: - 字符串(string)、散列(hash)、列表(list)、集合(set)和有序集合(sorted set)这五种类型的键的底层实现数据结构。 - Redis 的对象处理机制以及数据库的实现原理。 - 事务实现原理。 - 订阅与发布实现原理。 - Lua 脚本功能的实现原理。 - ``SORT`` 命令的实现原理。 - ``BITOP`` 、 ``BITCOUNT`` 等二进制位处理命令的实现原理。 - 慢查询日志的实现原理。 - RDB 持久化和 AOF 持久化的实现原理。 - Redis 事件处理器的实现原理。 - Redis 服务器和客户端的实现原理。 - 复制(replication)、Sentinel 和集群(cluster)这三个多机功能的实现原理。 本书的特色是: - 带有丰富的图示和表格, 帮助读者更好地理解书中的知识点。 - 关注功能的高层设计思路而不是底层的实现代码, 让读者无须花时间研读代码就可以了解到 Redis 的内部实现。 - 提供带有中文注释的 Redis 源码, 帮助有需要的读者做进一步的学习。 查看目录并试读 ----------------- 《Redis 设计与实现》全书共有 388 页,分为 4 个部分,共 24 章。 **以下目录中可点击的为试读内容。** - :doc:`preview/preface` - :doc:`preview/ack` 1. :doc:`preview/introduction/content` - :ref:`intro_version` - :ref:`intro_chapters` - :ref:`intro_how_to_read` - :ref:`intro_rules` - :ref:`intro_site` **第一部分:数据结构与对象** 2. :doc:`preview/sds/content` - :doc:`preview/sds/implementation` - :doc:`preview/sds/different_between_sds_and_c_string` - :doc:`preview/sds/api` - :doc:`preview/sds/review` - :doc:`preview/sds/reference` 3. :doc:`preview/adlist/content` - :doc:`preview/adlist/implementation` - :doc:`preview/adlist/api` - :doc:`preview/adlist/review` 4. :doc:`preview/dict/content` - :doc:`preview/dict/datastruct` - :doc:`preview/dict/hash_algorithm` - :doc:`preview/dict/collision_resolution` - :doc:`preview/dict/rehashing` - :doc:`preview/dict/incremental_rehashing` - :doc:`preview/dict/api` - :doc:`preview/dict/review` 5. :doc:`preview/skiplist/content` - :doc:`preview/skiplist/datastruct` - :doc:`preview/skiplist/api` - :doc:`preview/skiplist/review` 6. :doc:`preview/intset/content` - :doc:`preview/intset/datastruct` - :doc:`preview/intset/upgrade` - :doc:`preview/intset/why_upgrade` - :doc:`preview/intset/downgrade` - :doc:`preview/intset/api` - :doc:`preview/intset/review` 7. :doc:`preview/ziplist/content` - :doc:`preview/ziplist/list` - :doc:`preview/ziplist/node` - :doc:`preview/ziplist/cascade_update` - :doc:`preview/ziplist/api` - :doc:`preview/ziplist/review` 8. :doc:`preview/object/content` - :doc:`preview/object/object` - :doc:`preview/object/string` - :doc:`preview/object/list` - :doc:`preview/object/hash` - :doc:`preview/object/set` - :doc:`preview/object/sorted_set` - :doc:`preview/object/type_check` - :doc:`preview/object/refcount` - :doc:`preview/object/share_object` - :doc:`preview/object/lru` - :doc:`preview/object/review` **第二部分:单机数据库的实现** 9. 数据库 - 服务器中的数据库 - 切换数据库 - :doc:`preview/database/key_space` - 设置键的生存时间或过期时间 - 过期键删除策略 - Redis 的过期键删除策略 - AOF 、RDB 和复制功能对过期键的处理 - 数据库通知 - :doc:`preview/database/review` 10. RDB 持久化 - RDB 文件的创建与载入 - 自动间隔性保存 - :doc:`preview/rdb/rdb_struct` - 分析 RDB 文件 - :doc:`preview/rdb/review` 11. AOF 持久化 - :doc:`preview/aof/aof_implement` - AOF 文件的载入与数据还原 - AOF 重写 - :doc:`preview/aof/review` 12. 事件 - :doc:`preview/event/file_event` - 时间事件 - 事件的调度与执行 - :doc:`preview/event/review` - :doc:`preview/event/reference` 13. 客户端 - :doc:`preview/client/redis_client_property` - 客户端的创建与关闭 - :doc:`preview/client/review` 14. 服务器 - :doc:`preview/server/execute_command` - serverCron 函数 - 初始化服务器 - :doc:`preview/server/review` **第三部分:多机数据库的实现** 15. 复制 - :doc:`preview/replication/replicate-before-2-8` - 旧版复制功能的缺陷 - 新版复制功能的实现 - 部分重同步的实现 - PSYNC 命令的实现 - 复制的实现 - 心跳检测 - :doc:`preview/replication/review` 16. Sentinel - :doc:`preview/sentinel/init_sentinel` - 获取主服务器信息 - 获取从服务器信息 - 向主服务器和从服务器发送信息 - 接收来自主服务器和从服务器的频道信息 - 检测主观下线状态 - 检查客观下线状态 - 选举领头 Sentinel - 故障转移 - :doc:`preview/sentinel/review` - :doc:`preview/sentinel/reference` 17. 集群 - :doc:`preview/cluster/node` - 槽指派 - 在集群中执行命令 - 重新分片 - ASK 错误 - 复制与故障转移 - 消息 - :doc:`preview/cluster/review` **第四部分:独立功能的实现** 18. 发布与订阅 - :doc:`preview/pubsub/channel` - 模式的订阅与退订 - 发送消息 - 查看订阅信息 - :doc:`preview/pubsub/review` - :doc:`preview/pubsub/reference` 19. 事务 - :doc:`preview/transaction/transaction_implement` - WATCH 命令的实现 - 事务的 ACID 性质 - :doc:`preview/transaction/review` - :doc:`preview/transaction/reference` 20. Lua 脚本 - :doc:`preview/script/init_lua_env` - Lua 环境协作组件 - EVAL 命令的实现 - EVALSHA 命令的实现 - 脚本管理命令的实现 - 脚本复制 - :doc:`preview/script/review` - :doc:`preview/script/reference` 21. 排序 - :doc:`preview/sort/sort_key` - ALPHA 选项的实现 - ASC 选项和 DESC 选项的实现 - BY 选项的实现 - 带有 ALPHA 选项的 BY 选项的实现 - LIMIT 选项的实现 - GET 选项的实现 - STORE 选项的实现 - 多个选项的执行顺序 - :doc:`preview/sort/review` 22. 二进制位数组 - 位数组的表示 - :doc:`preview/bit/getbit` - SETBIT 命令的实现 - BITCOUNT 命令的实现 - BITOP 命令的实现 - :doc:`preview/bit/review` - :doc:`preview/bit/reference` 23. :doc:`preview/slowlog/content` - :ref:`slowlog_save` - :ref:`slowlog_view_and_delete` - :ref:`slowlog_add` - :ref:`slowlog_review` 24. :doc:`preview/monitor/content` - :doc:`preview/monitor/become_monitor` - :doc:`preview/monitor/propagate_command` - :doc:`preview/monitor/review` 注释源码 ----------------- 为了帮助有需要的读者进一步了解 Redis 的实现细节, 本书附带了一份包含详细中文注释的 Redis 3.0 版本源码可供参考: `https://github.com/huangzworks/redis-3.0-annotated <https://github.com/huangzworks/redis-3.0-annotated>`_ 。 相关资源 ----------------- `《如何阅读 Redis 源码》 <http://huangz.blog/2014/how-to-read-redis-source-code.html>`_ —— 文章给出了一个推荐的 Redis 源码阅读顺序以供参考, 读者可以在阅读完本书之后, 根据文章描述的顺序来尝试阅读源码, 从而进一步提高对 Redis 的了解。 `《Redis 设计与实现》图片集 <http://huangz.works/redisbook1e-gallery>`_ —— 展示了本书包含的绝大多数图片以及图片的源码, 方便读者在写博客、记笔记或者做演讲稿时引用本书的图片, 或者通过阅读图片的源码来学习 dot 语言和 Graphviz 图片生成工具。 .. `《Redis 多机特性工作原理简介》 <http://www.chinahadoop.cn/course/31>`_ —— 这个课程对 Redis 的复制、Sentinel 和集群三个特性的工作原理进行了基本的介绍。 因为课程的内容都提取自本书的《复制》、《Sentinel》和《集群》三个章节, 所以可以把这个课程看作是这三个章节的简介版本。 `旧版《Redis 设计与实现》 <http://huangz.works/redisbook>`_ —— 本书的上一版, 介绍了 Redis 2.6 的内部运作机制和单机功能。 要了解本书和旧版之间的区别, 请阅读 :doc:`different` 页面。 勘误 ----------------- :doc:`errata/index` 页面列出了本书已确认的勘误信息, 请读者在阅读本书之前, 根据这些信息对书本进行校正, 由此带来的不便作者深感抱歉。 如果读者发现了勘误页面目前尚未记录的新错误, 可以在本页面的 disqus 论坛进行反馈, 又或者通过 `huangz.works <http://huangz.works>`_ 页面展示的任意一种联系方式来联系作者。