6、从ziplist到quicklist,再到listpack的启发

你好,我是蒋德钧。 在前面的[第4讲],我介绍Redis优化设计数据结构来提升内存利用率的时候,提到可以使用压缩列表(ziplist)来保存数据。所以现在你应该也知道,ziplist的最大特点,就是它被设计成一种内存紧凑型的数据结构,占用一块连续的内...

Redis源码剖析与实战

7、为什么Stream使用了Radix Tree

你好,我是蒋德钧。这节课,我们继续从底层数据结构的视角出发,来聊聊Redis中的Stream数据类型是如何保存消息的。 Redis从5.0版本开始支持提供Stream数据类型,它可以用来保存消息数据,进而能帮助我们实现一个带有消息读写基本功能的消息队...

Redis源码剖析与实战

8、Redis server启动后会做哪些操作

你好,我是蒋德钧。从这节课开始,我们就来到了课程的第二个模块,在这个模块里,我会带你了解和学习与Redis实例运行相关方面的知识,包括Redis server的启动过程、基于事件驱动框架的网络通信机制以及Redis线程执行模型。今天,我们先来学习下R...

Redis源码剖析与实战

9、Redis事件驱动框架(上):何时使用select、poll、epoll

你好,我是蒋德钧。 Redis作为一个Client-Server架构的数据库,其源码中少不了用来实现网络通信的部分。而你应该也清楚,通常系统实现网络通信的基本方法是使用Socket编程模型,包括创建Socket、监听端口、处理连接请求和读写请求。但是...

Redis源码剖析与实战

10、Redis事件驱动框架(中):Redis实现了Reactor模型吗

你好,我是蒋德钧。今天,我们来聊聊Redis是如何实现Reactor模型的。 你在做Redis面试题的时候,或许经常会遇到这样一道经典的问题:Redis的网络框架是实现了Reactor模型吗?这看起来像是一道简单的“是/否”问答题,但是,如...

Redis源码剖析与实战

11、Redis事件驱动框架(下):Redis有哪些事件

你好,我是蒋德钧。 在[第9讲]中,我给你介绍了Linux提供的三种IO多路复用机制,分别是select、poll和epoll,这是Redis实现事件驱动框架的操作系统层支撑技术。 紧接着在上节课,我带你学习了Redis事件驱动框架的基本工作机制,其...

Redis源码剖析与实战
12348