大家好,今天给大家介绍一下我的新书 —— 《Redis核心原理与实践》

后端开发的同学应该对Redis都不陌生,Redis由于性能极高、功能强大,已成为业界非常流行的内存数据库。

《Redis核心原理与实践》这本书深入地分析了Redis常用特性的内部机制与实现方式,大部分内容源自对Redis源码的分析,并从中总结出实现原理。通过阅读本书,读者可以快速、轻松地了解Redis的内部运行机制。

为什么写这本书?

我一直希望从源码层面深入分析一个C语言实现的分布式系统程序。原因如下:

(1)C语言可以说是最接近低级语言的开发语言,分析C语言程序,可以让我们更深入理解操作系统底层知识。

(2)随着互联网行业发展,对后端系统高可用,高性能的要求越来越高,分布式系统也越来越流行。分析一个分布式系统的设计与实现,对我们的工作、学习都有很大帮助。

于是,我便阅读学习了Redis源码,并编写了《Redis核心原理与实践》这本书。

为什么选择Redis呢?因为Redis是一个典型的“小而美”的程序。

Redis实现简单,源码非常优雅简洁,阅读起来并不吃力,而且Redis功能齐全,涵盖了数据存储,分布式,消息流等众多特性,非常值得深入学习。

通过写作这本书,我对Redis,Unix编程,分布式系统、存储系统都有了更进一层的理解,再学习其他相关的系统(如Mysql、Nginx,Kafka),也可以举一反三,触类旁通。希望这本书也可以帮助读者百尺竿头,更进一步。

本书结构

第一部分主要分析了Redis中字符串、散列、列表、集合,有序集合这五种数据类型的编码格式。

编码格式,即数据的存储格式,对于数据库,数据的存储格式至关重要,如关系型数据库的行式存储和列式存储。而Redis作为内存数据库,对于数据编码的总体设计思想是:最大限度的“以时间换空间”,从而最大限度地节省内存。

这一部分内容详细分析了Redis对内存的使用如何达到“锱铢必较”的程度。

第二部分分析了Redis的核心流程,包括Redis事件机制与命令执行过程。

Redis利用IO复用模型,实现了自己的事件循环机制,而Redis正在由该事件机制驱动运行(很多远程服务程序都是使用类似的架构,如Nginx,Mysql等)。

Redis事件机制设计优雅,实现简单,并且性能卓越,可以说是“化繁为简”。

第三部分分析了Redis持久化与复制机制。虽然Redis是内存数据库,但仍然最大限度保证的数据的可靠性。

不管是文件持久化,还是从节点复制,核心思想都是一样的,通过将数据复制到多个副本中,从而保持数据安全。

这部分内容分析了RDB、AOF持久化机制,主从节点复制流程等内容,向读者展示了Redis数据是如何“不胫而走”的。

第四部分分析了Redis分布式架构。这部分内容从流行的分布式算法Raft算法出发,分析Sentient如何监控节点,Cluster集群如何实现数据分片,支持动态新增、删除集群节点,以及它们的“拿手好戏"——故障转移。

分布式系统常常让我联想到一个有趣的词,铁索连舟(将集群节点想象为”舟“,节点之间的网络连接想象为”索“)。

第五部分分析了Redis中的高级特性,包括Redis事务、非阻塞删除、ACL权限控制列表、Tracking机制、Lua脚本、Module模块、Stream消息流等内容,并且提供了详细的使用案例,帮助读者循序渐进,由浅到深地进行学习理解。

Redis为各种高性能,高可用场景提供了非常全面的支持,可以说是”包罗万象“。

本书特点

本书深入分析Redis实现原理,并不是Redis入门书。为了尽量降低本书阅读难度,本书总结了Redis各核心功能的实现机制,提取Redis核心代码(本书会尽量避免堆积代码),并以适量图文,对Redis源码以及实现原理进行详细分析,向读者展示Redis核心功能的设计思想,实现流程。

本书虽然大部分内容基于Redis源码分析,但是并不复杂,即使你只是简单了解C语言的基础语法,也可以轻松读懂。

推荐理由

  • 新版本:基于Redis 6.0.9,并分析了Redis新特性,如Redis 6的ACL、Tracking、IO线程等机制。
  • 重实践:本书在对应知识点的基础上提供了详细的应用示例,帮助读者由浅到深地学习和理解Redis新特性。
  • 易掌握:本书总结了Redis各个核心功能的实现原理,并以适量图文、丰富示例,对Redis源码及其实现原理进行详细分析,循序渐进地向读者展示Redis核心功能的设计思想和实现流程。读者也可以结合本书,自行阅读Redis源码。
  • 内容丰富:本书不仅分析了Redis的功能,还由Redis源码延展了如下两方面内容:

    (1)详细介绍Redis中使用到的Unix机制,包括Unix网络编程、进程(线程)的应用等内容,并通过源码展示Redis如何使用这些Unix机制。

    (2)深入分析Redis如何实现一个分布式系统,主要是Sentinel、Cluster机制如何实现一个高可用的分布式系统。

由于我能力有限,书中难免有遗漏或错误,若您在阅读本书的过程中有任何问题或者建议,欢迎大家沟通交流。我会对您提出的问题、建议进行梳理与反馈,并在本书后续版本中及时做出勘误与更新。

经过本书编辑同意,我后续会在个人技术公众号(binecy)发布书中部分章节内容,作为书的预览内容,欢迎大家查阅,谢谢。

京东链接

豆瓣链接

新书介绍 -- 《Redis核心原理与实践》的更多相关文章

  1. Redis核心原理与实践--Redis启动过程源码分析

    Redis服务器负责接收处理用户请求,为用户提供服务. Redis服务器的启动命令格式如下: redis-server [ configfile ] [ options ] configfile参数指 ...

  2. Redis核心原理与实践--字符串实现原理

    Redis是一个键值对数据库(key-value DB),下面是一个简单的Redis的命令: > SET msg "hello wolrd" 该命令将键"msg&q ...

  3. Redis核心原理与实践--列表实现原理之ziplist

    列表类型可以存储一组按插入顺序排序的字符串,它非常灵活,支持在两端插入.弹出数据,可以充当栈和队列的角色. > LPUSH fruit apple (integer) 1 > RPUSH ...

  4. Redis核心原理与实践--列表实现原理之quicklist结构

    在上一篇文章<Redis列表实现原理之ziplist结构>,我们分析了ziplist结构如何使用一块完整的内存存储列表数据. 同时也提出了一个问题:如果链表很长,ziplist中每次插入或 ...

  5. Redis核心原理与实践--散列类型与字典结构实现原理

    Redis散列类型可以存储一组无序的键值对,它特别适用于存储一个对象数据. > HSET fruit name apple price 7.6 origin china 3 > HGET ...

  6. Redis核心原理与实践--事务实践与源码分析

    Redis支持事务机制,但Redis的事务机制与传统关系型数据库的事务机制并不相同. Redis事务的本质是一组命令的集合(命令队列).事务可以一次执行多个命令,并提供以下保证: (1)事务中的所有命 ...

  7. Redis核心原理

    Redis系统介绍: Redis的基础介绍与安装使用步骤:https://www.jianshu.com/p/2a23257af57b Redis的基础数据结构与使用:https://www.jian ...

  8. Spark 以及 spark streaming 核心原理及实践

    收录待用,修改转载已取得腾讯云授权 作者 | 蒋专 蒋专,现CDG事业群社交与效果广告部微信广告中心业务逻辑组员工,负责广告系统后台开发,2012年上海同济大学软件学院本科毕业,曾在百度凤巢工作三年, ...

  9. JDK ThreadPoolExecutor核心原理与实践

    一.内容概括 本文内容主要围绕JDK中的ThreadPoolExecutor展开,首先描述了ThreadPoolExecutor的构造流程以及内部状态管理的机理,随后用大量篇幅深入源码探究了Threa ...

随机推荐

  1. Scala学习——函数

    一.函数的定义(def) object FunctionApp { //定义函数:方法体内最后一行为返回值,不需要使用return def add(a:Int,b:Int):Int={ a + b } ...

  2. python + csv 操作(读写)

    import csv"""与excel文件不同,csv文件中:1.数据都没有数据类型,值都是'字符串'2.没有颜色和样式,不能指定单元格测的宽高,不能合并单元格3.没有对 ...

  3. odoo controllers 中type="Json" 或type="http"

    服务端接收参考: # 导包 from odoo import http class HttpRequest(http.Controller): @http.route('/url', type='js ...

  4. 谈谈 C++ STL 中的迭代器

    C++中的迭代器和指针 在前面的内容中我们简单讲过,STL主要是由三部分组成 容器(container),包括vector,list,set,map等 泛型算法(generic algorithm), ...

  5. Jmeter RMI 反序列化命令执行漏洞(CVE-2018-1297)

    下载ysoserial,git git clone https://github.com/frohoff/ysoserial.git cd ysoserialmvn clean package -Ds ...

  6. raven靶机

    仅供个人娱乐 靶机信息 Raven 下载地址:https://www.vulnhub.com/entry/raven-1,256/ 一.主机探测 端口信息 目录扫描 80端口 根据页面开始搜寻有用的信 ...

  7. DC-9 靶机渗透测试

    DC-9 渗透测试 冲冲冲,好好学习 DC系列的9个靶机做完了,对渗透流程基本掌握,但是实战中出现的情况千千万万,需要用到的知识面太广了,学不可以已. 靶机IP: 172.66.66.139 kali ...

  8. Mybatis学习笔记-配置解析

    核心配置文件 mybatis-config.xml properties(属性) settings(设置) typeAliases(类型别名) typeHandlers(类型处理器) objectFa ...

  9. Vue Router根据后台数据加载不同的组件(思考->实现->不止于实现)

    实际项目中遇到的需求 同一个链接需要加载不同的页面组件.根据用户所购买服务的不同,有不同的页面展现. 有一些不好的实现方式 直接把这几个组件写在同一个组件下,通过v-if去判断.如果这么做的话,甚至可 ...

  10. K8S系列第八篇(Service、EndPoints以及高可用kubeadm部署)

    更多精彩内容请关注微信公众号:新猿技术生态圈 更多精彩内容请关注微信公众号:新猿技术生态圈 更多精彩内容请关注微信公众号:新猿技术生态圈 Endpoints 命名空间级资源,如果endpoints和s ...