![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis源码剖析
文章平均质量分 82
分析redis部分模块以及部分数据结构的实现
alpha miao~
这个作者很懒,什么都没留下…
展开
-
reids的事件循环
的结构确实有点让我吃惊,因为我之前写的网络模型都是直接在一整个循环中进行处理,执行回调函数等等的,在redis里面是将这写就绪事件集中在一个列表里,交给事件分发器。redis服务器负责与多个客户端建立网络连接,处理客户端发送的命令请求,在数据库中保存客户端执行的命令所产生的数据,并通过资源管理来维护服务器自身的运行。在linux操作系统下,redis使用的是基于epoll建立的网络模型。:处理就绪的socket事件(文件事件)和定时任务。主要结构–事件循环,多路复用的事件处理器的结构。原创 2024-01-17 22:42:23 · 937 阅读 · 0 评论 -
redis中zsliplist的实现
的效率都可以和平衡树相媲美,并且因为跳跃表的实现比平衡树更为简单,所以有不少程序使用跳跃表来代替平衡树。是一种有序的数据结构,他通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。skiplist是随机化算法的一种应用,在《数据结构与算法分析》一书中提到。在redis中一些有关zskiplist的宏定义。先来看看zskiplist中的node节点。redis中zskiplist的数据结构。获取符合给定范围内的最后一个节点。获取符合给定范围内的第一个节点。中用来进行范围查找的数据结构。原创 2024-01-12 00:20:35 · 830 阅读 · 3 评论 -
edis中的epoll和socket 封装应用
从socket.c的介绍中:connection不提供高级的输输入输出缓冲区的功能,这些高级的功能都在networking.c中实现。**到这里socket的创建基本就已经结束了,redis的特别之处还有一个是他的引用计数机制。在socket.c文件中提供的接口,主要是对connection中的socket fd的一些属性(socketopt)进行设置。epoll是linux的一个多路复用的库,其实每个对于epoll的用法很固定,只是在不同的reactor模型下每个事件循环。原创 2024-01-17 22:38:51 · 2041 阅读 · 0 评论