编辑
2026-01-25
java
00

目录

1.redis常见面试题
(1)redis缓存穿透
1.缓存空数据,查询结果为空仍把这个空结果进行缓存
2.布隆过滤器
(2)缓存击穿
1.互斥锁
2.逻辑过期
(3)缓存雪崩
(4)双写一致性
(5)redis数据持久化
1.RDB
2.AOF
(6)数据过期策略
1.惰性删除
2.定期删除
(7)redis数据淘汰策略
(8)redis分布式锁
1.setnx
2.redisson实现的分布式锁

1.redis常见面试题

(1)redis缓存穿透

image.png

使用不存在的id发送请求 不直接访问redis而是直接访问mysql

image.png

解决方案:

1.缓存空数据,查询结果为空仍把这个空结果进行缓存

优点:简单 缺点:消耗内存,可能发生不一致的问题

2.布隆过滤器

image.png

优点:内存占用较小,没有多余的key 缺点:实现较为复杂,存在误判

创建一个bitmap 初始全为空 预热布隆过滤器对传入id进行多次hash计算 由计算结果bitmap的对应位置该为1 如果传入idhash计算后在bitmap中不全为1就拦截

image.png

(2)缓存击穿

image.png

image.png

解决方案:

1.互斥锁

image.png

强一致 性能差

image.png

2.逻辑过期

image.png

高可用 性能优

image.png

(3)缓存雪崩

image.png

image.png

解决方案

image.png

image.png

(4)双写一致性

image.png

强一致

image.png

读写锁

image.png

延时双删

image.png

总结

image.png

(5)redis数据持久化

1.RDB

image.png

执行原理

image.png

2.AOF

image.png

RDB和AOF对比

image.png

image.png

(6)数据过期策略

1.惰性删除

设置该key过期后,我们不去管他,当需要该key时我们再检查其是否过期,如果过期,我们就删除它,反之则返回key。

image.png

2.定期删除

每隔一段时间我们就对一些key进行检查,删除里面过期的key

image.png

image.png

image.png

(7)redis数据淘汰策略

image.png

数据淘汰策略推荐

image.png

其他问题

image.png

image.png

(8)redis分布式锁

1.setnx

image.png

给锁续期

2.redisson实现的分布式锁

执行流程

image.png

image.png

同一线程中可重入

主从一致性

当主节点redis在获取锁时宕机会导致其他进程也获取锁成功

image.png

红锁

image.png

本文作者:钱小杰

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!