redis備份
redis有兩種備份方式:RDB AOF
RDB:這種方式是redis主進程fork一個子進程將內(nèi)存數(shù)據(jù)dump到一個臨時的RDB文件,在寫入完畢后替換之前的RDB文件
AOF:這種方式是redis在接收寫入命令的時候较雕,不斷append aof文件绑洛。當文件到達一定大小的時候進行壓縮,壓縮是對當前內(nèi)存的數(shù)據(jù)整合成若干命令,同時對壓縮過程中接收的命令進行緩存蝗罗,在壓縮結(jié)束后對緩存中的命令進行append
優(yōu)缺點
RDB數(shù)據(jù)恢復快 但是容易丟失數(shù)據(jù) 同步的時候如果文件特別大 容易卡頓
AOF數(shù)據(jù)完整 但是數(shù)據(jù)恢復慢
redis主從同步
主從同步分為:全量同步 增量同步
全量同步:一般發(fā)生在slave初始化的時候夹纫,會發(fā)送一個sync命令給master,master接收到命令的時候fork一個子進程進行rdb操作崔挖,在RBD結(jié)束之后循環(huán)所有的slave 把RDB數(shù)據(jù)發(fā)送給它們贸街。
增量同步:在master接收寫命令同步給slave。
redis集群原理
redis集群包括兩個東西狸相。一個是solt 一個是cluster薛匪,首先集群啟動的時候會給16384個solt分配節(jié)點。為什么是16384個槽卷哩,因為一個槽代表1bit 8bit*1024 =2kb蛋辈,設計者認為集群的最大節(jié)點不超過100 所以一個節(jié)點用163個槽是足夠的,并且2kb的心跳包能接受将谊。當我們有key過來時 先通過crc16算法得到一個結(jié)果然后對16384求余冷溶,得到該key的節(jié)點信息寫入。集群里面的節(jié)點是通過心跳連接保持通信的尊浓。如果有一半的節(jié)點認為一個主節(jié)點掛了逞频,那么它的slave節(jié)點中選舉一個擔任master。