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

相关推荐
Patrick在香港40 分钟前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
Sarvartha44 分钟前
Date、LocalDate、LocalTime、LocalDateTime、DateTimeFormatter类
java
悟道书生1 小时前
(一)Navicate为什么转存结构和数据只转存表而不包含建库?
数据库·oracle
阿俊-全栈开发1 小时前
LikeShop 多商户 Java 版商城微服务模块拆分与部署架构演进实践
java·微服务·架构·likeshop开源商城·多商户源码
赤龙ERP1 小时前
ERP周报:连接器开闸、国产GPU进场与智能工厂253家
数据库·人工智能·大模型·rpa·erp·企业数字化·builderpattern
Wang's Blog1 小时前
Java 项目实战:交友项目 - 联系人列表
java·开发语言·交友
lusklusklusk1 小时前
SQL Server补丁版本号为什么“日期新反而版本低”?——GDR、CU、CU+GDR 版本号规则与升级路径详解
数据库
我命由我123451 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
key_3_feng2 小时前
评估与对齐:Agent 自我进化的护栏
前端·数据库·agent
TangGeeA2 小时前
数据库、SQL 与 DB AI
数据库·人工智能·sql