Redis面试篇
缓存
缓存穿透
布隆过滤器
存在误判,实际应用中可以设置误判率,通常小于5%。
缓存击穿
互斥锁: 具有强一致性,但是性能查。
逻辑过期: 高可用,性能优,但不能保证数据绝对一致。
缓存雪崩
双写一致性
-
都会有脏数据的风险
-
先删再改会有脏数据,那就再删一次
-
保证数据库主从复制完成,避免数据库崩溃被从库恢复后又和缓存不一致,但是延时多久也是个问题
强一致性业务: 使用redis读写锁,但是性能低。
非强一致性业务: 异步通知保证数据的最终一致性,使用MQ。
持久化
RDB
AOF
RDB与AOF对比
数据过期策略
惰性删除 + 定期删除
惰性删除
定期删除
数据淘汰策略
分布式锁
Redisson
setnx + lua脚本(保证原子性)
但是红锁太耗资源不推荐,可用zookeeper。
集群
主从复制
保证Redis的高并发
全量同步
增量同步
哨兵模式
保证Redis的高可用
选主机制
脑裂问题
分片集群
解决海量数据存储问题和高并发写问题