目录
Redis是什么
Redis是一种内存数据库,可以用作数据库、缓存、流式引擎、消息代理。
Redis与Memcache的区别
Redis分布式存储方案
Redis集群切片方式
Redis数据分片算法
Redis数据类型
Redis淘汰算法
Redis持久化方式
Redis常见问题
缓存雪崩
大部分缓存数据同时失效,造成大量请求并发访问数据库
解决方案:
- 加锁或者队列
- 二级缓存,一个有时间限制的缓存+一个无时间限制的缓存
- 设置不同的缓存失效时间,在固定的缓存失效时间+随机缓存失效时间
缓存穿透
查询没有数据返回,导致缓存未生效,仍然直接查询数据库
解决方案:
- 如果查询为空,返回一个默认值放到缓存中。设置一个不超过5分钟的过期时间,以便正常更新缓存。
- 设置布隆过滤器。什么是布隆过滤器?布隆过滤器_百度百科
缓存预热
系统上线后需要直接加到缓存中,不需要等待每次请求后才加入缓存。
解决方案:
- 通过界面操作或者接口的方式,手动调用刷新缓存操作。
- 通过定时器刷新缓存
- 在程序启动时,自动加载缓存
缓存更新
- redis自带的缓存淘汰机制
- 定时清理过期缓存
- 当用户请求时,判断缓存时候过期,更新缓存
缓存降级
Redis出现问题,不去数据库查询,而是直接返回默认值给用户