redis常见面试题

接上篇基础:Redis常见面试题--基础篇-CSDN博客

问:redis中如何实现持久化?

答:有两种,AOF和RDB。

RDB:在指定的时间间隔内将内存中的数据集快照写入磁盘(Snapshot),它恢复时是将快照文件直接读到内存里。

  • 好处:适合大规模的数据恢复;对数据完整性和一致性要求不高
  • 劣势:在一定间隔时间做一次备份,所以如果Redis意外down掉的话,就会丢失最后一次快照后的所有修改。

AOF:以日志的形式来记录每个写操作,将Redis执行过的所有写指令记录下来(读操作不记录),只许追加文件但不可以改写文件,Redis启动之初会读取该文件重新构建数据,换言之,Redis重启的话就根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

  • 好处:数据完整性和一致性高,但性能差。
  • 劣势:恢复速度慢,且对redis性能有影响

问:如何抉择持久化方式?

  • 如果是数据不那么敏感,且可以从其他地方重新生成补回的,那么可以关闭持久化。

  • 如果是数据比较重要,不想再从其他地方获取,且可以承受数分钟的数据丢失,比如缓存等,那么可以只使用RDB。

  • 如果是用做内存数据库,要使用Redis的持久化,建议是RDB和AOF都开启,或者定期执行bgsave做快照备份,RDB方式更适合做数据的备份,AOF可以保证数据的不丢失。

  • 在redis4.0之后,添加了混合持久化的方式,aof文件前半段是rdb后半段是aof。不好的地方是兼容性差,之前的aof文件无法识别。

问:redis中对于过期键的删除策略?

  • 惰性删除:惰性删除不会去主动删除数据,而是在访问数据的时候,再检查当前键值是否过期,如果过期则执行删除并返回 null 给客户端,如果没有过期则返回正常信息给客户端。它的优点是简单,不需要对过期的数据做额外的处理,只有在每次访问的时候才会检查键值是否过期,缺点是删除过期键不及时,造成了一定的空间浪费。
  • 定期删除:Redis会周期性的随机测试一批设置了过期时间的key并进行处理。测试到的已过期的key将被删除。

问:了解redis中的内存淘汰策略吗?

Redis是不断的删除一些过期数据,但是很多没有设置过期时间的数据也会越来越多,那么Redis内存不够用的时候是怎么处理的呢?答案就是淘汰策略。当Redis的内存超过最大允许的内存之后,Redis会触发内存淘汰策略,删除一些不常用的数据,以保证Redis服务器的正常运行。

相关推荐
皮皮林55112 小时前
拒绝写重复代码,试试这套开源的 SpringBoot 组件,效率翻倍~
java·spring boot
顺风尿一寸16 小时前
从 Java NIO poll 到 Linux 内核 poll:一次系统调用的完整旅程
java
程途知微16 小时前
JVM运行时数据区各区域作用与溢出原理
java
随风飘的云16 小时前
MySQL的慢查询优化解决思路
数据库
华仔啊18 小时前
为啥不用 MP 的 saveOrUpdateBatch?MySQL 一条 SQL 批量增改才是最优解
java·后端
IvorySQL19 小时前
PostgreSQL 技术日报 (3月7日)|生态更新与内核性能讨论
数据库·postgresql·开源
xiaoye201820 小时前
Lettuce连接模型、命令执行、Pipeline 浅析
java
赵渝强老师20 小时前
【赵渝强老师】金仓数据库的数据文件
数据库·国产数据库·kingbase·金仓数据库
随逸1771 天前
《Milvus向量数据库从入门到实战,手把手搭建语义检索系统》
数据库
beata1 天前
Java基础-18:Java开发中的常用设计模式:深入解析与实战应用
java·后端