最近呢,我使用到redis的緩存這方面的知識,因此去加深了一下學習,故有一些積累的東西,在這裏給你們分享一下;順便也看成筆記通常的存在,以避免之後用到的時候,又去再次查找,難道本身記錄的知識,它不香嗎?java
運行環境: redis運行環境在計算機的內存中.若是redis服務器意外宕機,或者機房意外斷電等.那麼內存中的數據將會所有清空.勢必形成業務數據的丟失. 穩定性太差。redis
並且因爲Redis的數據都存放在內存中,若是沒有配置持久化,redis重啓後數據就全丟失了,因而須要開啓redis的持久化功能,將數據保存到磁盤上,當redis重啓後,能夠從磁盤中恢復數據。redis提供兩種方式進行持久化,一種是RDB持久化(原理是將Reids在內存中的數據庫記錄定時dump到磁盤上的RDB持久化),另一種是AOF(append only file)持久化(原理是將Reids的操做日誌以追加的方式寫入文件)。數據庫
持久化:能夠將內存數據按照指定的規則保存到磁盤中.當redis重啓時,根據配置文件中指定的持久化文件.實現數據的恢復.緩存
保存方式:服務器
1.多久保存一次?app
1.指定週期保存 2.實時保存異步
2.保存的是什麼?性能
1.保存key-value結構 2.保存用戶的操做記錄學習
1.可能會丟失數據. 2.持久化文件太大.不易維護.日誌
1.RDB模式是redis中默認的持久化的策略
2.RDB模式記錄的是Redis的內存快照 記錄速度更快
3.RDB模式是按期持久化.可能會致使少許的數據丟失.
4.若是用戶能夠容許少許的數據丟失,則首選RDB模式.由於RDB模式工做的效率最高.
1.save指令 將內存數據立刻持久化到硬盤中. 該操做是阻塞的. 持久化操做優先.
2.bgsave指令 後臺執行持久化操做. 不能保證當即立刻持久化. 當服務器空閒時,會進行持久化操做.(內存不忙) 不會陷入阻塞.
3.RDB模式能夠實現自動的持久化.
在redis的配置文件redis.conf中搜索save--:/save
,咱們將看見一下信息
save 900 1 900秒內執行1次set操做.則持久化一次. save 300 10 300秒內執行10次set操做.則持久化一次. save 60 10000 60秒內執行10000set操做.則持久化一次. #save 1 1 1秒內執行1set操做.則持久化一次 性能過低.
若是有特殊的需求,能夠修改持久化策略.可是須要注意性能問題。
前面一列是行數,我相信你們都懂啊!
253 dbfilename dump.rdb 能夠修改持久化文件的名稱 263 dir ./ 持久化文件的位置 ./當前文件目錄
1.AOF模式默認條件下是關閉的,須要手動開啓.
2.AOF模式能夠實現數據的實時持久化.
3.AOF模式,記錄的是用戶的操做的過程.以追加的形式添加到配置文件以後.
4.AOF模式的持久化是異步操做.不會影響用戶的使用.用戶使用不會陷入阻塞.
5.因爲AOF模式記錄的是用戶的操做過程,因此持久化文件較大.恢復數據時間較長.
開啓AOF模式
699 appendonly yes 703 appendfilename "appendonly.aof" 持久化文件名稱
若是RDB模式和AOF模式同時存在,以AOF模式爲主. 若是不想開啓AOF模式須要將配置關閉.
699 appendonly no
appendfsync always 只要用戶執行更新操做,就會持久化到文件中 appendfsync everysec 默認策略 表示每秒同步一次 appendfsync no 不主動持久化.
1.RDB模式持久化是同步的方式,AOF模式異步操做.
2.RDB模式記錄的是內存數據的快照(只保留最新數據),
AOF模式記錄的是用戶的操做過程(持久化文件較大).
3.RDB模式可能會丟失少許數據.AOF模式能夠實現實時持久化操做.保證數據"不丟失"
4.RDB模式性能更高.AOF模式運行更爲穩定.可是恢復數據的時間較長,須要按期清理維護持久化文件.