1.redis缓存过期
redis 数据少可以设置超时时间
redis 数据多单单设置超时时间 还不够 需要进行全盘扫描 时间太久 所以需要另外机制 redis 淘汰策略
2.内存淘汰策略
-
noeviction:返回错误,不会删除任何键值
-
allkeys-lru:使用LRU算法删除最近最少使用的键值
-
volatile-lru:使用LRU算法从设置了过期时间的键集合中删除最近最少使用的键值
-
allkeys-random:从所有key随机删除
-
volatile-random:从设置了过期时间的键的集合中随机删除
-
volatile-ttl:从设置了过期时间的键中删除剩余时间最短的键
-
volatile-lfu:从配置了过期时间的键中删除使用频率最少的键
-
allkeys-lfu:从所有键中删除使用频率最少的键
有了上述两种 可以解决内存占满的情况
缓存穿透情况
请求一些不存在的数据 因为redis 不存在 所以经常查询数据库
解决缓存穿透的情况
用redis的布隆过滤器 :
特点
说不存在一定不存在
对布隆过滤器的理解 可以参考 这个博客
https://www.cnblogs.com/xzqpy/p/12007020.html
缓存击穿 && 缓存雪崩
缓存击穿:redis这个数据刚好过期 还没来得及缓存 之后大量请求这个数据
缓存雪崩 :redis这批数据刚好同时过期 还没来得及缓存 之后大量请求这批数据
解决缓存击穿 && 缓存雪崩
随机设置数据超时时间 不要用固定值
设置了热点数据永不过期