![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
redis
zheng6652
这个作者很懒,什么都没留下…
展开
-
redis源码阅读:事件处理流程及源码分析
本文详细介绍了redis源码的事件处理流程。 一、涉及的类图如下: 二、主要的结构体如下 /* State of an event based program */ typedef struct aeEventLoop { int maxfd; /* highest file descriptor currently registered */ int ...原创 2018-08-17 22:09:19 · 481 阅读 · 0 评论 -
redis Sentinel机制、原理及代码分析
* 需求背景 有多个或一个sentinel实例组成的sentinel系统可以监视任意多个主服务器,以及这些主服务器属下的所有从服务器,并且在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务器代替已下线的主服务器继续处理命令请求。 * sentinel监控分布式系统的功能和需求 @服务器状态-主服务器上线下线监控...原创 2018-08-31 21:53:17 · 626 阅读 · 0 评论 -
redis 复制 replication机制、原理及实现代码分析
* 方案 完全重同步 * slave发送sync命令; *主收到sync命令后执行bgsave命令,后台生成rdb文件,并用一个写缓存区记录从现在开始执行的所有写命令; * 当bgsave执行完毕,master将rdb文件发送给slave,slave接收到这个rdb文件,用rdb更新数据库; * master把写缓冲区的所有写命令发送给slave;slave执行这些命令,将自己的数据库状...原创 2018-08-31 22:14:26 · 1152 阅读 · 0 评论 -
redis 发布/订阅(Pub/Sub) 源码分析
* 背景 发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个频道的订阅者就能接收到这条消息。 Redis的这种发布订阅机制与基于主题的发布订阅类似,Channel相当于主题。 原理图如下: * 命令 psubscribe new.* :匹配模式; publish channel message subscribe c...原创 2018-08-31 22:32:46 · 855 阅读 · 0 评论 -
redis rdb持久化原理及代码源码分析
原理 * save/bgsave命令,bgsave另外fork一个进程,子进程完成后signal父进程,父进程wait3()子进程,服务器能继续处理客户端的命令请求; * aof持久化优先于rdb持久化载入,且rdbload()中为互斥的; * save/bgsave在运行期间是互斥的; * bgrewirteaof和bgsave命令也是互斥的; * 自动间隔性保存:save perio...原创 2018-09-17 23:54:13 · 521 阅读 · 0 评论 -
redis aof持久化原理及源码分析
原理 * AOF持久化是通过保存redis服务器所执行的写命令来记录数据库状态;被写入AOF文件的所有命令都是以redis命令的请求协议格式保存的,纯文本格式; * aof重写功能:通过对整个数据库状态进行遍历,根据存储对象的不同,构造相应的命令写入重写文件,减少aof文件的大小; * 为了解决,子进程在进行aof重写期间,服务器还继续处理处理命令请求,新命令可能会对现有数据库状态进行修改,...原创 2018-09-17 23:57:29 · 300 阅读 · 0 评论 -
redis 过期键删除策略及源码分析
过期键删除策略 * 定时策略:为每个键值设置一个定时器,时间事件到,删除键值,要维护一个时间事件,redis的时间事件是链表,不合适; * 惰性策略:只有get键时才对键进行过期检查,耗内存,expireIfNeeded(); *定期删除:每隔一段时间从一定数量的数据库中取出一定数量的随机键进行检查,并删除其中的过期键,databasecron()--->activeExpireCyc...原创 2018-09-18 22:01:53 · 534 阅读 · 0 评论 -
redis 事务原理及源码分析
事务原理 * watch命令监控某个key要有事务一致性,当watch的key在事务multi命令执行中被修改后,事务会被终止; * multi命令开始事务,exec命令执行事务命令; * 不管在什么模式下,在一个事务最后加上save命令总可以保证事务的耐久性;aof持久化模式下,appendfsync选项为always时,就有耐久性; 源码分析 ...原创 2018-09-18 22:09:52 · 203 阅读 · 0 评论 -
redis cluster集群 原理、机制及源码分析
* 需求背景 1、扩展性:单机内存资源有限,要动态地节点扩容、节点缩容; 2、主从、数据备份和容灾; 3、redis是单线程io结构,多核结构的server发挥不到作用; 方案有:client sharding、twemproxy、redis cluster、proxy+redis cluster;----> codis proxy+zookeeper/nginx+redis ...原创 2018-09-13 21:53:11 · 1532 阅读 · 0 评论