
吃透Redis
文章平均质量分 90
Redis高手篇,包含Redis源码
吃透Java
专注Java技术,每天都要努力一点点
展开
-
吃透Redis(十一):Redis原子性的保证
Redis server 一旦和一个客户端建立连接后,就会在事件驱动框架中注册可读事件,这就对应了客户端的命令请求。而对于整个命令处理的过程来说,我认为主要可以分成四个阶段原创 2023-02-07 20:05:57 · 2757 阅读 · 1 评论 -
吃透Redis(十):Redis网络框架
很多人认为 Redis 是单线程,这个描述是不准确的。准确来说 Redis 只有在处理「客户端请求」时,是单线程的。但整个 Redis Server 并不是单线程的,还有后台线程在辅助处理一些工作。Redis 还启动了 3 个线程来执行文件关闭、AOF 同步写和惰性删除等操作。原创 2023-02-03 09:42:49 · 505 阅读 · 0 评论 -
吃透Redis(九):缓存淘汰篇-LFU算法
Redis 在 4.0 版本后,还引入了 LFU 算法,也就是最不频繁使用(Least Frequently Used,LFU)算法。LFU 算法在进行数据淘汰时,会把最不频繁访问的数据淘汰掉。而 LRU 算法是把最近最少使用的数据淘汰掉,看起来也是淘汰不频繁访问的数据。那么,LFU 算法和 LRU 算法的区别到底有哪些呢?我们在实际场景中,需要使用 LFU 算法吗?原创 2022-09-07 22:24:32 · 3654 阅读 · 0 评论 -
吃透Redis(八):缓存淘汰篇-LRU算法
近似 LRU 算法并没有使用耗时耗空间的链表,而是使用了固定大小的待淘汰数据集合,每次随机选择一些 key 加入待淘汰数据集合中。最后,再按照待淘汰集合中 key 的空闲时间长度,删除空闲时间最长的 key。这样一来,Redis 就近似实现了 LRU 算法的效果了...原创 2022-08-16 17:43:22 · 2795 阅读 · 1 评论 -
吃透Redis(七):网络框架篇-redis 6.0 IO多线程原子性保证
Redis的主线程处理客户端连接操作Redis的IO线程处理客户端的读、写操作Redis IO线程处理时,Redis主线程处理部分连接完毕后需要等待IO线程处理读写完成。原创 2022-08-10 21:31:03 · 928 阅读 · 0 评论 -
吃透Redis(六):网络框架篇-redis框架源码
很多人认为 Redis 是单线程,这个描述是不准确的。准确来说 Redis 只有在处理「客户端请求」时,是单线程的。但整个 Redis Server 并不是单线程的,还有后台线程在辅助处理一些工作。Redis 还启动了 3 个线程来执行文件关闭、AOF 同步写和惰性删除等操作。...原创 2022-08-07 21:34:25 · 533 阅读 · 0 评论 -
吃透Redis(五):网络框架篇-reactor模型
Redis 是由 C 语言实现的,它采用的正是「单 Reactor 单进程」的方案,因为 Redis 业务处理主要是在内存中完成,操作的速度是很快的,性能瓶颈不在 CPU 上,所以 Redis 对于命令的处理是单进程的方案。......原创 2022-08-06 20:08:50 · 1404 阅读 · 0 评论 -
吃透Redis(四):网络框架篇-多路复用器
主要介绍了Redis网络通信依赖的操作系统底层机制,也就是IO多路复用机制。由于Redis是单线程程序,如果使用基本的Socket编程模型的话,只能对一个监听套接字或一个已连接套接字进行监听。而当Redis实例面临很多并发的客户端时,这种处理方式的效率就会很低。所以,和基本的Socket通信相比,使用IO多路复用机制,就可以一次性获得就绪的多个套接字,从而避免了逐个检测套接字的开销。单线程服务器模型,面临的最大的问题就是,一个线程如何处理多个客户端请求?https。...原创 2022-08-01 17:48:02 · 606 阅读 · 0 评论 -
吃透Redis(三):数据结构篇-skiplist、quicklist、listpack
跳表是一个多层的有序链表,在跳表中进行查询操作时,查询代码可以从最高层开始查询。层数越高,结点数越少,同时高层结点的跨度会比较大。因此,在高层查询结点时,查询一个结点可能就已经查到了链表的中间位置了。这样一来,跳表就会先查高层,如果高层直接查到了等于待查元素的结点,那么就可以直接返回。如果查到第一个大于待查元素的结点后,就转向下一层查询。下层上的结点数多于上层,所以这样可以在更多的结点中进一步查找待查元素是否存在。Redis的ZSet为什么用skiplist而不用平衡二叉树实现?https。......原创 2022-07-27 11:01:48 · 1717 阅读 · 0 评论 -
吃透Redis(二):数据结构篇-内存优化的数据结构设计
降低内存开销,对于Redis这样的内存数据库来说非常重要,Redis用于优化内存使用效率的两种方法内存优化的数据结构设计和节省内存的共享数据访问。原创 2022-07-24 22:35:43 · 1076 阅读 · 1 评论 -
吃透Redis(一):数据结构篇-全局Hash表
通过源码分析Redis的全局Hash表,dictEntry源码,RedisObject源码,SDS、Hash表扩容、渐进式reHash等原理原创 2022-07-15 15:47:28 · 2809 阅读 · 2 评论