文章分类 -  极客时间

上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 45 下一页
摘要:你好,我是蒋德钧。 从今天这节课开始,我们又将进入一个新的模块,也就是可靠性保证模块。在这个模块中,我会先带你了解Redis数据持久化的实现,其中包括Redis内存快照RDB文件的生成方法,以及AOF日志的记录与重写。了解了这部分内容,可以让你掌握RDB文件的格式,学习到如何制作数据库镜像,并且你也 阅读全文
posted @ 2023-01-07 16:19 易先讯 阅读(10) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。这节课,我来给你公布一下期中考试中问答题的答案。 第一题 Redis源码中实现的哈希表在rehash时,会调用dictRehash函数。dictRehash函数的原型如下,它的参数n表示本次rehash要搬移n个哈希桶(bucket)中的数据。假设dictRehash被调用,并且n 阅读全文
posted @ 2023-01-07 16:19 易先讯 阅读(9) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。 Redis缓存淘汰算法的目的,其实是为了在Redis server内存使用量超过上限值的时候,筛选一些冷数据出来,把它们从Redis server中删除,以保证server的内存使用量不超出上限。我们在前两节课,已经分别学习了Redis源码对LRU算法和LFU算法的实现,这两种算 阅读全文
posted @ 2023-01-07 16:18 易先讯 阅读(18) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。 上节课我给你介绍了Redis对缓存淘汰策略LRU算法的近似实现。其实,Redis在4.0版本后,还引入了LFU算法,也就是最不频繁使用(Least Frequently Used,LFU)算法。LFU算法在进行数据淘汰时,会把最不频繁访问的数据淘汰掉。而LRU算法是把最近最少使用 阅读全文
posted @ 2023-01-07 16:18 易先讯 阅读(15) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。 从这节课开始,我们就进入了课程的第三个模块:缓存模块。在接下来的三节课当中,我会给你详细介绍LRU、LFU算法在Redis源码中的实现,以及Redis惰性删除对缓存的影响。 学习这部分内容,一方面可以让你掌握这些经典缓存算法在一个实际系统中该如何设计和实现;另一方面,你也可以学习 阅读全文
posted @ 2023-01-07 16:17 易先讯 阅读(9) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。 分布式锁是Redis在实际业务场景中的一个重要应用。当有多个客户端并发访问某个共享资源时,比如要修改数据库中的某条记录,为了避免记录修改冲突,我们可以让所有客户端从Redis上获取分布式锁,只有拿到锁的客户端才能操作共享资源。 那么,对于分布式锁来说,它实现的关键就是要保证加锁和 阅读全文
posted @ 2023-01-07 16:17 易先讯 阅读(10) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。 通过上节课的学习,我们知道Redis server启动后的进程会以单线程的方式,执行客户端请求解析和处理工作。但是,Redis server也会通过bioInit函数启动三个后台线程,来处理后台任务。也就是说,Redis不再让主线程执行一些耗时操作,比如同步写、删除等,而是交给后 阅读全文
posted @ 2023-01-07 16:16 易先讯 阅读(12) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。今天这节课,我们来聊聊Redis的执行模型。 所谓的执行模型,就是指Redis运行时使用的进程、子进程和线程的个数,以及它们各自负责的工作任务。 你在实际使用Redis的时候,可能经常会听到类似“Redis是单线程”“Redis的主IO线程”,“Redis包含多线程”等不同说法。我 阅读全文
posted @ 2023-01-07 16:16 易先讯 阅读(15) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。 在第9讲中,我给你介绍了Linux提供的三种IO多路复用机制,分别是select、poll和epoll,这是Redis实现事件驱动框架的操作系统层支撑技术。 紧接着在上节课,我带你学习了Redis事件驱动框架的基本工作机制,其中介绍了事件驱动框架基于的Reactor模型,并以IO 阅读全文
posted @ 2023-01-07 16:15 易先讯 阅读(13) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。今天,我们来聊聊Redis是如何实现Reactor模型的。 你在做Redis面试题的时候,或许经常会遇到这样一道经典的问题:Redis的网络框架是实现了Reactor模型吗?这看起来像是一道简单的“是/否”问答题,但是,如果你想给出一个让面试官满意的答案,这就非常考验你的高性能网络 阅读全文
posted @ 2023-01-07 16:15 易先讯 阅读(7) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。 Redis作为一个Client-Server架构的数据库,其源码中少不了用来实现网络通信的部分。而你应该也清楚,通常系统实现网络通信的基本方法是使用Socket编程模型,包括创建Socket、监听端口、处理连接请求和读写请求。但是,由于基本的Socket编程模型一次只能处理一个客 阅读全文
posted @ 2023-01-07 15:13 易先讯 阅读(13) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。从这节课开始,我们就来到了课程的第二个模块,在这个模块里,我会带你了解和学习与Redis实例运行相关方面的知识,包括Redis server的启动过程、基于事件驱动框架的网络通信机制以及Redis线程执行模型。今天,我们先来学习下Redis server的启动过程。 我们知道,ma 阅读全文
posted @ 2023-01-07 15:13 易先讯 阅读(97) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。这节课,我们继续从底层数据结构的视角出发,来聊聊Redis中的Stream数据类型是如何保存消息的。 Redis从5.0版本开始支持提供Stream数据类型,它可以用来保存消息数据,进而能帮助我们实现一个带有消息读写基本功能的消息队列,并用于日常的分布式程序通信当中。我在讲如何使用 阅读全文
posted @ 2023-01-07 15:12 易先讯 阅读(19) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。 在前面的第4讲,我介绍Redis优化设计数据结构来提升内存利用率的时候,提到可以使用压缩列表(ziplist)来保存数据。所以现在你应该也知道,ziplist的最大特点,就是它被设计成一种内存紧凑型的数据结构,占用一块连续的内存空间,以达到节省内存的目的。 但是,在计算机系统中, 阅读全文
posted @ 2023-01-07 15:12 易先讯 阅读(31) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。 有序集合(Sorted Set)是Redis中一种重要的数据类型,它本身是集合类型,同时也可以支持集合中的元素带有权重,并按权重排序。 而曾经就有一位从事Redis开发的同学问我:为什么Sorted Set能同时提供以下两种操作接口,以及它们的复杂度分别是O(logN)+M和O( 阅读全文
posted @ 2023-01-07 15:11 易先讯 阅读(16) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。今天我们来聊聊,Redis中是如何通过优化设计数据结构,来提升内存利用率的。 我们知道Redis是内存数据库,所以,高效使用内存对Redis的实现来说非常重要。而实际上,Redis主要是通过两大方面的技术来提升内存使用效率的,分别是数据结构的优化设计与使用,以及内存数据按一定规则淘 阅读全文
posted @ 2023-01-07 15:11 易先讯 阅读(7) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。今天,我们来聊聊Redis中的Hash。 我们知道,Hash表是一种非常关键的数据结构,在计算机系统中发挥着重要作用。比如在Memcached中,Hash表被用来索引数据;在数据库系统中,Hash表被用来辅助SQL查询。而对于Redis键值数据库来说,Hash表既是键值对中的一种值 阅读全文
posted @ 2023-01-07 15:11 易先讯 阅读(16) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。 字符串在我们平时的应用开发中十分常见,比如我们要记录用户信息、商品信息、状态信息等等,这些都会用到字符串。 而对于Redis来说,键值对中的键是字符串,值有时也是字符串。我们在Redis中写入一条用户信息,记录了用户姓名、性别、所在城市等,这些都是字符串,如下所示: SET us 阅读全文
posted @ 2023-01-07 15:10 易先讯 阅读(9) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧。从今天这节课开始,我们将开启“Redis代码之旅”,一起来掌握Redis的核心设计思想。 不过,在正式开始我们的旅程之前,还需要先做个“攻略”,也就是要了解和掌握Redis代码的整体架构。 这是因为,一旦掌握了Redis代码的整体架构,就相当于给Redis代码画了张全景图。有了这张 阅读全文
posted @ 2023-01-07 15:10 易先讯 阅读(73) 评论(0) 推荐(0)
摘要:你好,我是蒋德钧,目前在中科院计算所任职副研究员。在2015年的时候,我和团队开始设计实现一个高性能键值数据库。为了实现这一目标,我们调研了业界常用的多种键值数据库,并选择Redis作为重点研究对象。在学习Redis的过程中,我就通读了Redis的源码,尤其是Redis的数据结构、主从复制、RDB/ 阅读全文
posted @ 2023-01-07 15:09 易先讯 阅读(15) 评论(0) 推荐(0)

上一页 1 ··· 21 22 23 24 25 26 27 28 29 ··· 45 下一页