美文网首页
Redis缓存

Redis缓存

作者: 林几许 | 来源:发表于2022-03-03 09:50 被阅读0次

请求完数据库数据后,把返回结果保存在redis里,来降低数据库的请求次数
存储数据类型:
String
Hash
List
Set
SortedSet
Bitmap
······

缓存过期:

存在内存的数据量有限,所有设置一个超时时间,应用程序设置超时时间后,缓存会过期

缓存淘汰:

过期的缓存会被清理掉,定时删除,100ms做一次

惰性删除:

由于不可能全部查询一次删除,所以随机选择过期的去删除,但有些不会被选中,成为漏网之鱼,所以就规定如果请求查询的时候发现过期了就立即删除,被动式触发

内存淘汰机制:

总有些不会被随机选中,又没有被请求,于是有个这个淘汰机制:

noeviction:返回错误,不会删除任何键值
allkeys-lru:使用LRU算法删除最近最少使用的键值
volatile-lru:使用LRU算法从设置了过期时间的键集合中删除最近最少使用的键值
allkeys-random:从所有key随机删除
volatile-random:从设置了过期时间的键的集合中随机删除
volatile-ttl:从设置了过期时间的键中删除剩余时间最短的键
volatile-lfu:从配置了过期时间的键中删除使用频率最少的键
allkeys-lfu:从所有键中删除使用频率最少的键
缓存穿透:

当查询的数据不存在,就没法存在缓存里,导致继续访问数据库,这就叫缓存穿透

布隆过滤器:

能够从很多的数据中告诉你查询的数据不存在(说不存在在就一定不存在,说存在却不一定存在)

缓存击穿 && 缓存雪崩:
  • 当热点数据过期被清除了,大量访问突然都到了数据库,这就是缓存击穿
  • 一大批数据几乎同时失效被清除,超大量访问到数据库,这就是缓存雪崩
缓存击穿和缓存雪崩的解决办法就是:

应用程序端设置热点数据永不过期,然后把键值的过期时间随机一下。

相关文章