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服务器的正常运行。

相关推荐
厚衣服_313 分钟前
第18篇:数据库中间件架构中的服务治理与限流熔断机制设计
数据库·中间件·架构
盖世英雄酱5813621 分钟前
🚀不改SQL,也能让SQL的执行效率提升100倍
java·数据库·后端
Java技术小馆31 分钟前
Cursor链接远程服务器实现项目部署
java
Xy91033 分钟前
从代码角度拆解Apptrace的一键拉起
javascript·数据库
用户05956611920937 分钟前
深入理解Spring Boot框架:从基础到实践
java·spring·编程语言
晴空月明43 分钟前
JVM 类加载过程与字节码执行深度解析
java
掉鱼的猫1 小时前
Solon AI + MCP实战:5行代码搞定天气查询,LLM从此告别数据孤岛
java·openai·mcp
带刺的坐椅2 小时前
Solon AI + MCP实战:5行代码搞定天气查询,LLM从此告别数据孤岛
java·mcp·solon-ai
androidwork2 小时前
嵌套滚动交互处理总结
android·java·kotlin
袋鼠云数栈2 小时前
国产数据库StarRocks在数栈轻量化数据开发的全流程实践
数据库