面试官:Redis持久化能关吗?怎么关?

数据持久化是指将数据从内存中,保存到磁盘或其他持久存储介质的过程,这样做的目的是为了保证数据不丢失。

而 Redis 的持久化功能默认是开启的,这样做的目的也是为了保证程序的稳定性(防止缓存雪崩、缓存击穿等问题)和数据不丢失。

Redis持久化能关吗?怎么关?

Redis 持久化默认是开启的,但可以手动关闭。

Redis 4 之后它的持久化总共有以下三种方式:

  1. RDB(Redis DataBase)持久化:快照方式持久化,将某一个时刻的内存数据,以二进制的方式写入磁盘。
  2. AOF(Append Only File)持久化:文件追加持久化,记录所有非查询操作命令,并以文本的形式追加到文件中。
  3. 混合持久化:RDB + AOF 混合方式的持久化,Redis 4 之后新增的方式,混合持久化是结合了 RDB 和 AOF 的优点,在写入的时候,先把当前的数据以 RDB 的形式写入文件的开头,再将后续的操作命令以 AOF 的格式存入文件,这样既能保证 Redis 重启时的速度,又能减低数据丢失的风险。

所以,我们要关闭 Redis 持久化,需要将以上三种持久化方式全部关闭,具体操作如下。

① 关闭RDB持久化

在 Redis 的配置文件 redis.conf 中,你可以将以下配置项设置为禁用状态:

bash 复制代码
save ""  # 将 save 参数列表清空,表示不进行任何条件下的数据保存

或者直接注释掉所有 save 行以取消 RDB 持久化。

② 关闭AOP持久化

在 redis.conf 配置文件中,将以下配置项修改为禁用 AOF:

bash 复制代码
appendonly no  # 设置为 no,表示关闭 AOF 持久化

③ 关闭混合持久化

在 redis.conf 配置文件中,将以下配置项修改为禁用混合持久化:

bash 复制代码
rdb-aof-use-rdb-preamble no # no 表示关闭混合持久化

或者是将混合持久化这行配置给注释掉,如下所示:

bash 复制代码
# rdb-aof-use-rdb-preamble yes

注意:以上持久化关闭之后,都需要重启 Redis 服务才能生效。

小结

Redis 持久化功能默认是开启的,这样做的目的也是为了保证程序的稳定性(防止缓存雪崩、缓存击穿等问题)和保证数据不丢失。想要手动关闭 Redis 持久化,需要将 RDB、AOF 和混合持久化全部关闭才行,并且关闭之后需要重启 Redis 服务才能生效。

课后思考

Redis 关闭持久化之后,数据一定会丢失吗?为什么?


本文已收录到我的面试小站 www.javacn.site,其中包含的内容有:Redis、JVM、并发、并发、MySQL、Spring、Spring MVC、Spring Boot、Spring Cloud、MyBatis、设计模式、消息队列等模块。

相关推荐
高频因子挖掘机15 分钟前
量化回测应该保存不复权数据吗?从数据口径到收益计算的工程实践
后端·github·api
高频因子挖掘机1 小时前
实时行情为什么不应该逐只股票请求?批量查询与标的池管理实践
后端·github·api
程序猿DD6 小时前
OctaFuse Gateway 2.15.0:MCP 聚合、向量 Embeddings 与官方目录同步
后端·agent
蛋蛋的就会顺顺的9 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
程序员Sunday9 小时前
TypeScript 的 any、unknown、never 有什么区别?
前端·面试·typescript
余槐i9 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化
需要8269 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡10 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
凤山老林10 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
伯恩bourne11 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端