1970-01-01

05 有序集合为何能同时支持点查询和范围查询?有序集合(Sorted Set)是 Redis 中一种重要的数据类型,它本身是集合类型,同时也可以支持集合中的元素带有权重,并按权重排序。 而曾经就有一位从事 Redis 开发的同学问我:为什么 Sort...

1970-01-01

06 从ziplist到quicklist,再到listpack的启发在前面的【第 4 讲】,我介绍 Redis 优化设计数据结构来提升内存利用率的时候,提到可以使用压缩列表(ziplist)来保存数据。所以现在你应该也知道,ziplist 的最大特...

1970-01-01

07 为什么Stream使用了Radix Tree?这节课,我们继续从底层数据结构的视角出发,来聊聊 Redis 中的 Stream 数据类型是如何保存消息的。 Redis 从 5.0 版本开始支持提供 Stream 数据类型,它可以用来保存消息数据...

1970-01-01

08 Redis server启动后会做哪些操作?从这节课开始,我们就来到了课程的第二个模块,在这个模块里,我会带你了解和学习与 Redis 实例运行相关方面的知识,包括 Redis server 的启动过程、基于事件驱动框架的网络通信机制以及 Re...

1970-01-01

09 Redis事件驱动框架(上):何时使用select、poll、epoll?Redis 作为一个 Client-Server 架构的数据库,其源码中少不了用来实现网络通信的部分。而你应该也清楚,通常系统实现网络通信的基本方法是 使用 Socket...

1970-01-01

10 Redis事件驱动框架(中):Redis实现了Reactor模型吗?今天,我们来聊聊 Redis 是如何实现 Reactor 模型的。 你在做 Redis 面试题的时候,或许经常会遇到这样一道经典的问题:Redis 的网络框架是实现了 Reac...

1970-01-01

11 Redis事件驱动框架(下):Redis有哪些事件?在【第 9 讲】中,我给你介绍了 Linux 提供的三种 IO 多路复用机制,分别是 select、poll 和 epoll,这是 Redis 实现事件驱动框架的操作系统层支撑技术。 紧接着在...

1970-01-01

12 Redis真的是单线程吗?今天这节课,我们来聊聊 Redis 的执行模型。 所谓的执行模型,就是指 Redis 运行时使用的进程、子进程和线程的个数,以及它们各自负责的工作任务。 你在实际使用 Redis 的时候,可能经常会听到类似“Redis...

1970-01-01

13 Redis 6.0多IO线程的效率提高了吗?通过上节课的学习,我们知道 Redis server 启动后的进程会以单线程的方式,执行客户端请求解析和处理工作。但是,Redis server 也会通过 bioInit 函数启动三个后台线程,来处理...

1970-01-01

14 从代码实现看分布式锁的原子性保证分布式锁是 Redis 在实际业务场景中的一个重要应用。当有多个客户端并发访问某个共享资源时,比如要修改数据库中的某条记录,为了避免记录修改冲突,我们可以让所有客户端从 Redis 上获取分布式锁,只有拿到锁的客...

1131415161766