redis 数据完整性

来源:互联网 发布:北京网络推广软件 编辑:程序博客网 时间:2024/06/15 19:07

redis为保证数据的完整性、故障恢复, 提供了多种方式; 这多种方式可以组合使用。


回写:

0)redis命令, 主动回写磁盘

-----save: 同步回写,阻塞所有后续读写请求, 直至save操作完成。 数据量大时可能假死很长时间。

-----bgsave: 异步回写,主进程fork子进程, 子进程复制了主进程的内存地址空间;子进程回写磁盘、写完自动退出。 数据量大时仍然比较耗时, 而且需要占用一倍的内存空间。

ps, 这是单机版。。。



数据持久化:

1) RDB。  snapshot方式。 redis按照规则达到一定条件时,fork出子进程, 子进程复制了redis server的完整内存空间。  子进程将内存数据全量保存到磁盘上。 但两次快照之间的会丢掉。 类似于bgsave

2)AOF。 类似于mysql的binlog, redis将每条写命令都append到AOF文件中。



replication:

4)  Master--Slave。 redis的Master和Slave之间有一套交互协议,Slave连上Master后发送SYNC, Master fork子进程复制全量数据发送给Slave、并将这段以及后续的写命令发给Slave; Slave据此重构出数据。  Slave每次重连Master, 都会导致一个全量拷贝、传输。

只需要在A上用slaveof B 即可; B就是A的master了。



因此,较理想的架构就是

Master-------Slave;

Master上关闭RDB/AOF等; Slave上开启RDB/AOF。  恢复时AOF的优先级比RDB高。

为解决Master的单点, 可以主动同时写多个Master。

presharding在线给redis扩容。 需要在低峰时段或者短暂停服。




http://blog.chinaunix.net/uid-20682890-id-3603246.html

http://www.cnblogs.com/stephen-liu74/archive/2012/02/23/2364717.html

http://in.sdo.com/?p=1187

0 0
原创粉丝点击