redis
文章平均质量分 86
Kingbaiyulong
这个作者很懒,什么都没留下…
展开
-
redis源码分析(五)- Redis 事件驱动
一 Redis 事件驱动 作为一个网络数据库服务器,不可置否redis也用到了事件驱动的编程模型来实现网络通讯,不像Memcached采用libevent实现网络通讯,redis拒绝了庞大的libevent,尽管libev已经比较轻量,但是仍然比不上只有不到几百行代码的ae事件驱动库。 通常,事件驱动库的组成部分包括以下几个部分: 1)事件,一般由外在因素触发,比如有网络数据原创 2017-02-10 21:36:29 · 317 阅读 · 0 评论 -
redis源码分析(七)- 网络通讯协议(networking.c)
一 Redis网络通讯协议 上节分析了redis对C标准网络的一系列简单的封装,本节继续分析Redis网络通讯的具体实现,也就是networking.c源原件,主要包括如何建立和客户端的链接,并且接收其命令,返回数据给客户端。 二 网络通讯协议的实现 2.1 建立连接 server端回初始化一个socket端口来监听客户端的连接,当一个建立一个连接后,服务端会对原创 2017-02-11 15:07:20 · 1037 阅读 · 0 评论 -
Redis主从复制机制
Redis主从复制机制一主要结构图 二 主要原理在Slave启动并连接到Master之后,它将主动发送一个SYNC命令。此后Master将启动后台存盘进程,同时收集所有接收到的用于修改数据集的命令,在后台进程执行完毕后,Master将传送整个数据库文件到Slave,以完成一次完全同步。而Slave服务器在接收到数据库文件数据之后将其存盘并加载到内存中。此后,Master继续将所有已经收集到的修改命令原创 2017-03-10 23:54:23 · 262 阅读 · 0 评论 -
redis源码分析(三)-ziplist的实现
一 ziplist简介以及应用 ziplist称之为压缩链表,顾名思义,压缩链表有压缩节省空间的语义。回想redis另外一种链表:双向链表,每个节点都需要prev、next指针来指向前后节点,如何数据只占1字节,大量的此类数据会造成空间上的浪费。因此redis提出了另外一种更具有空间效率的链表:压缩链表,压缩链表则没有这两个指针,压缩链表含有两个数,一个代表前一个节点的长度,有一个表示原创 2017-02-09 21:19:08 · 380 阅读 · 0 评论