缓存常见问题

缓存常见问题

  • 缓存雪崩
  • 缓存穿透
  • 缓存占用过多内存

缓存雪崩

缓存雪崩指的是在某一个时间点里边, 有大量的Key过期, 然后引起大量请求同时访问到数据库
针对这个问题, 我们可以把Key的过期时间随机化或等差划分, 反正就是要消除掉大量缓存同时失效的情况.

缓存穿透

缓存穿透指的是访问到了缓存当中不存在的数据, 在缓存里边拿不到数据就会从数据库里边取, 如果并发数量大, 也会造成大量请求直接访问到数据库的现象

  1. 如果请求访问的都是同一条缓存数据, 可以设置访问互斥锁, 只允许第一个请求访问数据库, 其他请求则添加到队列, 等第一个请求从数据库里拿到数据并更新缓存后, 队列里的请求直接访问缓存数据
  2. 如果请求访问的都是不同的数据, 且当数据库里查询不到数据后并不会更新缓存, 那么可以往缓存里边设置空对象, 简单直接, 碰到查询结果为空的键, 放一个空值在缓存中, 次再访问就立刻知道这个键无效, 而不会再次访问数据库

缓存占用过多内存

查看redis里各Key占用内存

猜你喜欢

转载自www.cnblogs.com/dears/p/9208895.html