数据持久化是指将数据从内存中,保存到磁盘或其他持久存储介质的过程,这样做的目的是为了保证数据不丢失。
而 Redis 的持久化功能默认是开启的,这样做的目的也是为了保证程序的稳定性(防止缓存雪崩、缓存击穿等问题)和数据不丢失。
Redis持久化能关吗?怎么关?
Redis 持久化默认是开启的,但可以手动关闭。
Redis 4 之后它的持久化总共有以下三种方式:
- RDB(Redis DataBase)持久化:快照方式持久化,将某一个时刻的内存数据,以二进制的方式写入磁盘。
- AOF(Append Only File)持久化:文件追加持久化,记录所有非查询操作命令,并以文本的形式追加到文件中。
- 混合持久化:RDB + AOF 混合方式的持久化,Redis 4 之后新增的方式,混合持久化是结合了 RDB 和 AOF 的优点,在写入的时候,先把当前的数据以 RDB 的形式写入文件的开头,再将后续的操作命令以 AOF 的格式存入文件,这样既能保证 Redis 重启时的速度,又能减低数据丢失的风险。
所以,我们要关闭 Redis 持久化,需要将以上三种持久化方式全部关闭,具体操作如下。
① 关闭RDB持久化
在 Redis 的配置文件 redis.conf 中,你可以将以下配置项设置为禁用状态:
save "" # 将 save 参数列表清空,表示不进行任何条件下的数据保存
或者直接注释掉所有 save 行以取消 RDB 持久化。
② 关闭AOF持久化
在 redis.conf 配置文件中,将以下配置项修改为禁用 AOF:
appendonly no # 设置为 no,表示关闭 AOF 持久化
③ 关闭混合持久化
在 redis.conf 配置文件中,将以下配置项修改为禁用混合持久化:
rdb-aof-use-rdb-preamble no # no 表示关闭混合持久化
或者是将混合持久化这行配置给注释掉,如下所示:
# rdb-aof-use-rdb-preamble yes
注意:以上持久化关闭之后,都需要重启 Redis 服务才能生效。
小结
Redis 持久化功能默认是开启的,这样做的目的也是为了保证程序的稳定性(防止缓存雪崩、缓存击穿等问题)和保证数据不丢失。想要手动关闭 Redis 持久化,需要将 RDB、AOF 和混合持久化全部关闭才行,并且关闭之后需要重启 Redis 服务才能生效。
课后思考
Redis 关闭持久化之后,数据一定会丢失吗?为什么?
特殊说明
以上内容来自我的《Java 面试突击训练营》,这门课程是有着十几年工作经验(前 360 开发工程师),10 年面试官经验的我,花费 4 年时间打磨完成的一门视频面试课。学完训练营的课程之后,基本可以应对目前市面上绝大部分公司的面试了,并且课程配备了 9 大就业服务,帮助上千人找到 Java 工作,其中上百人拿到大厂 Offer,学员最高薪资 70W 年薪,面试课目录和 9 大服务如下:
加我微信咨询:vipStone【备注:训练营】