Redis AOF 全持久化
生活随笔
收集整理的這篇文章主要介紹了
Redis AOF 全持久化
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
簡介:
Redis AOF 持久化,將每次接收到更改 redis 數(shù)據(jù)的操作都記錄到一個 aof 文件,當(dāng)服務(wù)器意外宕機或 redis 服務(wù)器非法關(guān)閉時,不會丟失數(shù)據(jù)。
可以做到數(shù)據(jù)安全化,但是性能會受到影響。
1、修改 redis.conf
shell > vim /usr/local/redis/redis.confdaemonize yes port 6379 timeout 300 loglevel debug pidfile /usr/local/redis/logs/redis.pid logfile /usr/local/redis/logs/redis.logdatabases 16#save 900 1 #save 300 10 #save 60 10000 #rdbcompression yes #dbfilename dump.rdb## 關(guān)閉 RDB 持久化dir /usr/local/redis/data/appendonly yes appendfilename appendonly.aof appendfsync everysec## 開啟 AOF 持久化,定義 aof 文件名,定義同步磁盤規(guī)則為每秒強制同步no-appendfsync-on-rewrite yes auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb## 由于 AOF 的特性是記錄每次操作,當(dāng)客戶端執(zhí)行相同的操作時,aof 也會記錄這些相同的每次操作,那么 aof 文件會不斷增加。## 對于這個問題,可以使用 aof 文件的重寫功能解決 aof 文件的增長。當(dāng) aof 文件滿足一定條件時就對 aof 進行重寫,重寫是根據(jù)當(dāng)前內(nèi)存數(shù)據(jù)庫中的數(shù)據(jù)進行遍歷到一個臨時的 aof 文件,寫完后替換原來的 aof 文件。## no-appendfsync-on-rewrite 參數(shù)表示在重寫期間對新接收到的寫操作不同步,暫時存在內(nèi)存中,等重寫完后再寫入,防止與磁盤 IO 沖突。 ## auto-aof-rewrite-percentage 參數(shù)表示 aof 文件增長率大于這個值并且同時 aof 文件大于下面參數(shù)值時,觸發(fā) aof rewrite ## auto-aof-rewrite-min-size 參數(shù)表示當(dāng)前 aof 文件大小大于這個值時
2、測試 Redis AOF 持久化
shell > redis-server /usr/local/redis/redis.confshell > ls /usr/local/redis/data/ appendonly.aof## 生成一個 .aof 的空文件
shell > redis-cli redis 127.0.0.1:6379> set name wang OK redis 127.0.0.1:6379> get name "wang" redis 127.0.0.1:6379> set name1 zhao OK redis 127.0.0.1:6379> get name1 "zhao" redis 127.0.0.1:6379> set name2 lun OK redis 127.0.0.1:6379> get name2 "lun" redis 127.0.0.1:6379> quitshell > cat /usr/local/redis/data/appendonly.aof *2 $6 SELECT $1 0 *3 $3 set $4 name $4 wang *3 $3 set $5 name1 $4 zhao *3 $3 set $5 name2 $3 lun## 記錄了每一次操作
shell > kill -9 `cat /usr/local/redis/logs/redis.pid`## 像測試 RDB 一樣,非法關(guān)閉 redis
shell > redis-server /usr/local/redis/redis.confshell > redis-cli redis 127.0.0.1:6379> get name "wang" redis 127.0.0.1:6379> get name1 "zhao" redis 127.0.0.1:6379> get name2 "lun" redis 127.0.0.1:6379> quit## 啟動測試 keys/value 都存在。
## 建議使用 AOF 持久化的同時也使用 RDB 半持久化,AOF 的優(yōu)先級是高于 RDB 的,也就是說啟動服務(wù)時是先加載 AOF ,后加載 RDB 的。
## 當(dāng) Redis 服務(wù)器磁盤壞掉時,數(shù)據(jù)如何保證不丟失? Master / slave 的方式解決!
轉(zhuǎn)載于:https://www.cnblogs.com/wangxiaoqiangs/p/5640018.html
總結(jié)
以上是生活随笔為你收集整理的Redis AOF 全持久化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: libevent使用IOCP网络模型的示
- 下一篇: 安卓如何限制横屏和竖屏