0、开篇词

你好,我是蒋德钧,欢迎和我一起学习Redis。 我博士毕业后,就一直在中科院计算所工作,现在的职位是副研究员。在过去的14年时间里,我一直从事互联网底层基础设施方面的研究工作,主要的研究方向为新型存储介质、键值数据库、存储系统和操作系统。 2015年...

Redis核心技术与实战

1、一个键值数据库包含什么

你好,我是蒋德钧。 我们知道,Redis是典型的键值数据库,所以今天,我准备手把手地带你构建一个简单的键值数据库。为啥要这么做呢? 还记得我在开篇词说过吗?Redis本身比较复杂,如果我们一上来就直接研究一个个具体的技术点,比如“单线程”“缓存”等,...

Redis核心技术与实战

2、快速的Redis有哪些慢操作

你好,我是蒋德钧。 一提到Redis,我们的脑子里马上就会出现一个词:“快。”但是你有没有想过,Redis的快,到底是快在哪里呢?实际上,这里有一个重要的表现:它接收到一个键值对操作后,能以微秒级别的速度找到数据,并快速完成操作。 数据库这么多,为啥...

Redis核心技术与实战

3、单线程的Redis为什么那么快

你好,我是蒋德钧。 今天,我们来探讨一个很多人都很关心的问题:“为什么单线程的Redis能那么快?” 首先,我要和你厘清一个事实,我们通常说,Redis是单线程,主要是指Redis的网络IO和键值对读写是由一个线程来完成的,这也是Redis对外提供键...

Redis核心技术与实战

4、宕机了,如何避免数据丢失

你好,我是蒋德钧。 如果有人问你:“你会把Redis用在什么业务场景下?”我想你大概率会说:“我会把它当作缓存使用,因为它把后端数据库中的数据存储在内存中,然后直接从内存中读取数据,响应速度会非常快。”没错,这确实是Redis的一个普遍使用场景,但是...

Redis核心技术与实战

5、宕机后,如何实现快速恢复

你好,我是蒋德钧。 上节课,我们学习了Redis避免数据丢失的AOF方法。这个方法的好处,是每次执行只需要记录操作命令,需要持久化的数据量不大。一般而言,只要你采用的不是always的持久化策略,就不会对性能造成太大影响。 但是,也正因为记录的是操作...

Redis核心技术与实战

6、主从库如何实现数据一致

你好,我是蒋德钧。 前两节课,我们学习了AOF和RDB,如果Redis发生了宕机,它们可以分别通过回放日志和重新读入RDB文件的方式恢复数据,从而保证尽量少丢失数据,提升可靠性。 不过,即使用了这两种方法,也依然存在服务不可用的问题。比如说,我们在实...

Redis核心技术与实战

7、主库挂了,如何不间断服务

你好,我是蒋德钧。 上节课,我们学习了主从库集群模式。在这个模式下,如果从库发生故障了,客户端可以继续向主库或其他从库发送请求,进行相关的操作,但是如果主库发生故障了,那就直接会影响到从库的同步,因为从库没有相应的主库可以进行数据复制操作了。 而且,...

Redis核心技术与实战

8、哨兵挂了,主从库还能切换吗

你好,我是蒋德钧。 上节课,我们学习了哨兵机制,它可以实现主从库的自动切换。通过部署多个实例,就形成了一个哨兵集群。哨兵集群中的多个实例共同判断,可以降低对主库下线的误判率。 但是,我们还是要考虑一个问题:如果有哨兵实例在运行时发生了故障,主从库还能...

Redis核心技术与实战

9、数据增多,加内存还是加实例

你好,我是蒋德钧。今天我们来学习切片集群。 我曾遇到过这么一个需求:要用Redis保存5000万个键值对,每个键值对大约是512B,为了能快速部署并对外提供服务,我们采用云主机来运行Redis实例,那么,该如何选择云主机的内存容量呢? 我粗略地计算了...

Redis核心技术与实战
1235