Reids的缓存穿透和雪崩及解决方案

1. 缓存穿透

指redis内存数据库中没有,访问持久层获取数据的过程。

解决方案:

1. 布隆过滤器。将所有可能存在的数据哈希到一个足够大的bitap中,不存在的时候被这个bitmap拦截掉,从而避免了访问持久层的压力。

2. 设置空值法,查询到的数据为空或者异常时,将这个数据的value设置为空放到redis中,下次就可以从缓存中取值了。

2. 缓冲雪崩

指某一个时间段,缓冲集中过期失效。

解决方案:

1. 延长缓存的失效时间

2. 给每一个缓存数据增加相应的缓存标记,记录缓存是否失效。如果缓存失效,则更新数据缓存。

3. 缓存预热

系统启动的时候,将需要缓存的数据加载到缓存中

4. 缓存更新

1. 定时的清理过期的缓存。

2. 请求时检查缓存是否过期,过期的话更新缓存。

5. 缓存降级

当访问量大的时候,可以通过一些方案,放弃一些数据的缓存机制,保证正常功能的缓存正常运行。

6. 缓存热点key

  1. 互斥锁

  2. 永不过期

 

猜你喜欢

转载自www.cnblogs.com/baoyi/p/redis-error.html