Redis面试题

为啥快?

1.基于内存
2.优秀的数据结构,大多数O(1) 时间复杂度的命令
3.自定义redis协议
4.多路I/O复用模型
5.单线程,避免线程切换影响

持久化方式 区别?

AOF(保存的是命令)
    优点:最多丢失一秒数据
    缺点:体积大,恢复慢(重新再让命令)
RDB(保存的是快照)
    优点:最大化redis性能,恢复更快
    缺点:丢失数据,耗时效率低
官方推荐两个都启用,如果对数据安全没有要求可以只启用RDB,但是不建议单独使用AOF。如果只是用Redis作为纯内存缓存,则可以都不启用。
同时开启两种缓存的话,恢复数据时会优先采用AOF,因为AOF的数据更加完整。

什么场景用到过,什么数据类型?

String   分布式锁
list     不要求一致性的消息队列
set      用户昵称不可重复
zset     延迟队列 有序集合
hash     Java对象类存储

过期删除策略?

定时删除 优先内存  妥协:删除一些 一点点来
惰性删除 优先CPU

内存淘汰策略,淘汰算法?

了解最大内存
volatile-lru:利用 LRU 算法移除设置过过期时间的 key (LRU:最近使用 Least Recently Used );
allkeys-lru:利用 LRU 算法移除任何key (和上一个相比,删除的 key 包括设置过期时间和不设置过期时间的),通常使用该方式;
volatile-random:移除设置过过期时间的随机key ;
allkeys-random:无差别的随机移除;
volatile-ttl:移除即将过期的 key (minor TTL);
noeviction:不移除任何 key,只是返回一个写错误 ,默认选项。当前项目使用;

数据并发竞争,造成啥问题,怎么解决

多机器更新同一key问题,数据版本号比较,时间戳比较来解决。使之保存为最新数据。
posted @   苏子墨  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示