-
1.noeviction:直接返回错误,不淘汰任何已经存在的redis键
-
2.allkeys-lru:所有的键使用lru算法进行淘汰
-
3.volatile-lru:有过期时间的使用lru算法进行淘汰
-
4.allkeys-random:随机删除redis键
-
5.volatile-random:随机删除有过期时间的redis键
-
6.volatile-ttl:删除快过期的redis键
-
7.volatile-lfu:根据lfu算法从有过期时间的键删除
-
8.allkeys-lfu:根据lfu算法从所有键删除
热 key 就是说,在某一时刻,有非常多的请求访问某个 key,流量过大,导致该 redi 服务器宕机
解决方案:
-
可以将结果缓存到本地内存中
-
将热 key 分散到不同的服务器中
-
设置永不过期
缓存穿透:
- 缓存穿透是指用户请求的数据在缓存中不存在并且在数据库中也不存在,导致用户每次请求该数据都要去数据库中查询一遍,然后返回空。
解决方案:
-
布隆过滤器
-
返回空对象
缓存击穿:
- 缓存击穿,是指一个 key 非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个 key 在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。
解决方案:
-
互斥锁
-
永不过期
缓存雪崩: