分享

REDIS学习IV

 MikeDoc 2011-06-30
先简单介绍一下redis replication的特点。
1.一个master可以有多个slave
2.Slave也可以有自己的slave,即级联
3.Master不受任何slave同步影响,但slave端在第一次执行同步时会阻塞读
4.多个slave可以分担读压力
5.可以用replication代替快照进程(saving),利用replication的实时同步来灾备数据

再来看看replication的实现原理。
只 要slave连接master,不管第一次连接master或者reconnect,slave都会发出一个SYNC命令。之后master在后台启动一 个快照进程(saving)来收集最近的修改数据集的所有命令。当saving结束时会将db file传输到slave,然后slave读到内存中,然后每次master将增量的把所有涉及db set修改的命令给到slave。(不管你配置的slave是否做了持久化,第一次SYNC后都会记录到磁盘的rdb上)

***注意***由 于第一次slave连接master或者reconnect master时都会触发master做一个快照save(不管你有没有做本地持久化),将内存数据写入到磁盘(rdb文件),之后将文件传给slave, 注意slave会首先写入文件(rdb),之后再读入到内存中,如果写文件失败,slave的内存中将什么都没有(至少肯定没有master的数据),并 且master会不断的做快照,直到成功为止。


配置slave,很简单,在slave上执行:
redis> slaveof testdb2.corp.alimama.com 6379
也可以写到slave的conf文件里,每次启动都会作为slave身份了,参数slaveof <masterip> <masterport>,即
slaveof testdb2.corp.alimama.com 6379

官方文档以及我们出的一些测试可以看出,redis的replication是非常快的,可以认为它是“实时”的。
如果我们要检查redis slave与master是否同步,可以做一些简单的操作:
在master上set一个key,
redis> set test-key “test-sync”
然后去slave上get,检查是否可以读到,
redis> get test-key
"test-sync"
说明slave与master是一样的,可以支持灾备,最后删除这个key,
redis> del test-key   

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多