Redis存儲RDB與AOF

Redis 是一個開源(BSD許可)的,內存中的數據結構存儲系統,它可以用作數據庫、緩存和消息中間件。 它支持多種類型的數據結構,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 與範圍查詢, bitmaps, hyperloglogs 和 地理空間(geospatial) 索引半徑查詢。 Redis 內置了 複製(replication)LUA腳本(Lua scripting), LRU驅動事件(LRU eviction)事務(transactions) 和不同級別的 磁盤持久化(persistence), 並通過 Redis哨兵(Sentinel)和自動 分區(Cluster)提供高可用性(high availability)

 1################################ RDB  #################################
 2 # Save the DB ondisk:
 3#  設置sedis進行數據庫鏡像的頻率。
 4 #  900秒(15分鐘)內至少1個key值改變(則進行數據庫保存--持久化)。 5 #  300秒(5分鐘)內至少10個key值改變(則進行數據庫保存--持久化)。 6 #  60秒(1分鐘)內至少10000個key值改變(則進行數據庫保存--持久化)。 7save9001 8save30010 9save60100001011 stop-writes-on-bgsave-error yes
12# 在進行鏡像備份時,是否進行壓縮。yes:壓縮,但是需要一些cpu的消耗。no:不壓縮,需要更多的磁盤空間。
13rdbcompression yes
14 # 一個CRC64的校驗就被放在了文件末尾,當存儲或者加載rbd文件的時候會有一個10%左右的性能下降,爲了達到性能的最大化,你可以關掉這個配置項。
15rdbchecksum yes
16# 快照的文件名
17 dbfilename dump.rdb
18# 存放快照的目錄
19 dir /var/lib/redis 

1 ############################## AOF ###############################
 2# 是否開啓AOF,默認關閉(no)
 3appendonly yes
 4# 指定 AOF 文件名
 5appendfilename appendonly.aof
 6# Redis支持三種不同的刷寫模式:
 7# appendfsync always #每次收到寫命令就立即強制寫入磁盤,是最有保證的完全的持久化,但速度也是最慢的,一般不推薦使用。
 8appendfsync everysec #每秒鐘強制寫入磁盤一次,在性能和持久化方面做了很好的折中,是受推薦的方式。
 9# appendfsync no     #完全依賴OS的寫入,一般爲30秒左右一次,性能最好但是持久化最沒有保證,不被推薦。
1011#在日誌重寫時,不進行命令追加操作,而只是將其放在緩衝區裏,避免與命令的追加造成DISK IO上的衝突。
12#設置爲yes表示rewrite期間對新寫操作不fsync,暫時存在內存中,等rewrite完成後再寫入,默認爲no,建議yes
13 no-appendfsync-on-rewrite yes 
14#當前AOF文件大小是上次日誌重寫得到AOF文件大小的二倍時,自動啓動新的日誌重寫過程。
15 auto-aof-rewrite-percentage 10016#當前AOF文件啓動新的日誌重寫過程的最小值,避免剛剛啓動Reids時由於文件尺寸較小導致頻繁的重寫。
17 auto-aof-rewrite-min-size 64mb

子進程在執行AOF重寫時,

1.處理命令請求,

2.將寫命令追加到現有的AOF文件中,

3.將寫命令追加到AOF重寫緩存中


注意:

      上面說了RDB快照的持久化,需要注意:在進行快照的時候(save),fork出來進行dump操作的子進程會佔用與父進程一樣的內存,真正的copy-on-write,對性能的影響和內存的耗用都是比較大的。比如機器8G內存,Redis已經使用了6G內存,這時save的話會再生成6G,變成12G,大於系統的8G。這時候會發生交換;要是虛擬內存不夠則會崩潰,導致數據丟失。所以在用redis的時候一定對系統內存做好容量規劃



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章