哈?Redis百萬數據爲何上生產後憑空消失?恍然大悟了 爲何不見了? 正確的處理方式

爲何不見了?

先來說說場景:

項目在上生產之前,我們已經把所需要的數據提前加入到redis當中,因爲在生產環境中,rbd和aof持久化是需要兩個同時打開的,而redis默認只打開了rbd。

爲啥要兩個都打開呀?

rdb 丟失數據較多,但是在恢復數據比較快,aof 丟失的數據較少,但是恢復慢。 所以,在生產環境,一般都會全部打開。

怎麼丟失的?

我們在轉移到生產服務器上之後,就要檢查和修改各項配置,而redis就是其中一個。由於redis.conf文件默認只開啓了rbd持久化,需要把aof持久化打開。

問題就是出在這裏,在測試環境上,所用的持久化方式都是rdb,然後直接通過redis.conf配置文件把aof打開,那麼,在redis啓動的時候,會去加載aof文件,從而不會加載rbd文件,最後結果就是rbd數據沒有被加載,導致數據丟失的假象。

來看演示:

現在我們有一臺redis,只開啓了rbd持久化,並且有少量的數據,這個時候一切都正常。

現在通過redis.conf文件來開啓aof持久化配置,並且重新啓動redis:

然後我們再來看下redis中的數據量有多少:

雖然數據量是0,但是並不代表數據就丟失了,數據還是之前rbd持久化文件當中,只是多了一個aof文件。

正確的處理方式

1、首先我們需要先把redis.conf文件中的aof關閉掉。

2、啓動redis,然後通過命令的方式,打開aof持久化配置。(因爲是通過rdb持久化方式啓動的redis,數據已經加載到內存當中,通過命令的方式打開aof,aof會去持久化當前內存中的數據)

3、最後再把redis.conf文件的中的aof打開,因爲通過命令去修改配置文件,只是本次有效,下一次就失效了。

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