lxyfirst

C++博客 首页 新随笔 联系 聚合 管理
  33 Posts :: 3 Stories :: 27 Comments :: 0 Trackbacks
redis根据数据的更新量和间隔时间定期将数据刷新到存储中,相当于做checkpoint。
通过系统调用fork的copy-on-write的方式实现内存的拷贝,保证刷数据时的一致性。
但是如果在刷数据期间数据发生大量变化,可能会造成内存的大量copy-on-write,引起系统内存拷贝的负载变化。
逻辑:
1.主进程调用fork 。
2.子进程关闭listen fd ,开始刷数据到存储。
3.主进程调整策略,减少内存数据更改。

redis的这种策略并不能保证数据可靠性,没有write ahead日志,异常情况数据可能会丢失。
因此redis加入了append only的日志文件,以保证数据可靠,但是每次数据更新都写日志的做法使得日志文件增长很快,redis使用跟刷数据类似
的方式后台整理这个日志文件。

注:目前的数据库一般通过write ahead日志保证数据可靠性,但是这种日志也不是实时刷新,而是写到buffer中,被触发刷新到文件。


posted on 2010-08-21 10:37 star 阅读(886) 评论(1)  编辑 收藏 引用

Feedback

# re: redis持久化实现逻辑 2011-07-05 13:27 geelou
redis java分群 163264749
Redis PHP分群 163265386
redis c,c++,c#分群 163269313
redis shell,python分群 69287882   回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理