面試官:Redis持久化能關嗎?怎么關?
數據持久化是指將數據從內存中,保存到磁盤或其他持久存儲介質的過程,這樣做的目的是為了保證數據不丟失。
而 Redis 的持久化功能默認是開啟的,這樣做的目的也是為了保證程序的穩定性(防止緩存雪崩、緩存擊穿等問題)和數據不丟失。
Redis持久化能關嗎?怎么關?
Redis 持久化默認是開啟的,但可以手動關閉。
Redis 4 之后它的持久化總共有以下三種方式:
- RDB(Redis DataBase)持久化:快照方式持久化,將某一個時刻的內存數據,以二進制的方式寫入磁盤。
- AOF(Append Only File)持久化:文件追加持久化,記錄所有非查詢操作命令,并以文本的形式追加到文件中。
- 混合持久化:RDB + AOF 混合方式的持久化,Redis 4 之后新增的方式,混合持久化是結合了 RDB 和 AOF 的優點,在寫入的時候,先把當前的數據以 RDB 的形式寫入文件的開頭,再將后續的操作命令以 AOF 的格式存入文件,這樣既能保證 Redis 重啟時的速度,又能減低數據丟失的風險。
所以,我們要關閉 Redis 持久化,需要將以上三種持久化方式全部關閉,具體操作如下。
1、關閉RDB持久化
在 Redis 的配置文件 redis.conf 中,你可以將以下配置項設置為禁用狀態:
save "" # 將 save 參數列表清空,表示不進行任何條件下的數據保存
或者直接注釋掉所有 save 行以取消 RDB 持久化。
2、關閉AOP持久化
在 redis.conf 配置文件中,將以下配置項修改為禁用 AOF:
appendonly no # 設置為 no,表示關閉 AOF 持久化
3、關閉混合持久化
在 redis.conf 配置文件中,將以下配置項修改為禁用混合持久化:
rdb-aof-use-rdb-preamble no # no 表示關閉混合持久化
或者是將混合持久化這行配置給注釋掉,如下所示:
# rdb-aof-use-rdb-preamble yes
注意:以上持久化關閉之后,都需要重啟 Redis 服務才能生效。
小結
Redis 持久化功能默認是開啟的,這樣做的目的也是為了保證程序的穩定性(防止緩存雪崩、緩存擊穿等問題)和保證數據不丟失。想要手動關閉 Redis 持久化,需要將 RDB、AOF 和混合持久化全部關閉才行,并且關閉之后需要重啟 Redis 服務才能生效。
課后思考
Redis 關閉持久化之后,數據一定會丟失嗎?為什么?