Redis篇
redis使用场景-缓存-缓存穿透
解决方案一:缓存空数据
解决方案二:布隆过滤器
布隆过滤器的介绍
面试问答
redis使用场景-缓存-缓存击穿
两种解决方案:
1)互斥锁
2)逻辑过期
两种解决方案:互斥锁/逻辑过期
上述两者对比:
对于容错率低的场景,比如银行等采用互斥锁,其满足强一致性,缺点是性能差。
面试问答
redis使用场景-缓存-缓存雪崩
解决方案
面试问答
redis使用场景-缓存-双写一致性
强一致性-采用Redisson提供的读写锁
允许延时一致的业务-异步通知保证数据的最终一致性
允许延时一致的业务-基于Canal的异步通知
面试问答
强一致性的回答
允许延时一致的回答
redis使用场景-缓存-持久化
RDB
AOF
疑问:redis中AOF方式下,everysec为什么会丢失一秒的数据
如果在某一秒内,Redis已经将数据写入缓冲区但还未执行fsync操作时系统发生故障(如断电、崩溃、Redis进程被意外终止等),那么这一秒的数据由于只存在于内存缓存区中,未持久化到磁盘而导致数据丢失。
触发重写规则
RDB和AOF对比
面试问答
redis使用场景-缓存-数据过期策略
惰性删除
定期删除
Redis使用的策略
面试问答
redis使用场景-缓存-数据淘汰策略
数据淘汰策略-使用建议
面试问答
redis分布式锁-使用场景
以抢劵场景为例进行分析
对于单体项目分析
这种情况下加个synchronized
是没有问题的,它是属于本地的锁
服务集群部署分析
使用synchronized
就解决不了,需要使用分布式锁