修改redis源码,实现aof文件的自动拆分

来源:互联网 发布:ubuntu设置dns 编辑:程序博客网 时间:2024/05/05 20:51

我们知道redis的持久化有两种,一种是rdb,一种是aof,而redis的复制也是基于持久化的方式进行的

但是这两种方式都有一些问题

1.rdb方式,如果数据量比较大,那简直可以说是对你服务器做压力测试了,无论cpu,内存,还是磁盘,都是巨大压力,如果这个时候slave再需要进行同步,你的网络估计也要hlod不住了,所以这种持久化策略是极不靠谱的

2.aof方式,这种策略相对缓和一些,有点像mysql的binlog,但是依然有一个问题,为了防止文件过大,会发生rewrite,这个rewrite的效果虽然比不上rdb,但是对服务器的稳定也是非常不利的


既然,aof出现rewrite是为了防止文件过大(当然还有合并命令的考虑),那为什么我们不能参考下常见日志处理方式,进行日志的拆分呢,顺着这个思路,我改下了下redis的源码,使之支持了aof文件根据时间的拆分,这样会不会出现文件过大的问题了.


代码路径: https://github.com/hongliuliao/redis

配置方式: 在redis.conf文件中,配置 aof_shift_interval 5 (单位是秒)


但是这样也会导致一个问题,就是redis在启动的时候,会通过执行aof文件进行数据恢复,所以,如果重启了,需要在启动之前把aof文件删除掉,

实现这个功能主要是为了配合simple_flow进行数据复制使用的,最终也是为了保证系统稳定的情况下,能进行高效,可靠的复制工作

0 0