Redis缓存那些事儿

发布时间:2022-06-20 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了Redis缓存那些事儿脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1、redis支持好几种数据结构的存储:

  • String
  • Hash
  • List
  • Set
  • SortedSet
  • BITmap
  • ······

2、缓存过期 && 缓存淘汰

缓存过期:给缓存内容设置一个超时时间,具体设置多长交给应用程序们去设置。

=> 定期删除: 随机选择一部分来清理,缓解内存压力。    缺点:某些键值对每次都能幸免于难,长时间霸占内存。

=> 惰性删除: 那些原来逃脱随机选择算法的键值,一旦遇到查询请求,发现已经超期,就立即删除。    缺点:被动式触发的,不查询就不会发生。导致某些键值一直逍遥法外,可以使用的内存空间却越来越少。

=> 内存淘汰策略: 8种。

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

3、缓存穿透 && 布隆过滤器

缓存穿透:某些请求,查询的数据不存在,也没法缓存,导致同样的请求来了每次都要去让MySQL白忙活一场。

Redis缓存那些事儿

 

 

=> 解决方法:将不会有结果的查询请求挡一下,不去查库。

=> 布隆过滤器 BloomFilter:

  擅长从超大的数据集中快速告诉你查找的数据存不存在(悄悄告诉你,我的这位朋友一点不靠谱,它告诉你存在的话不能全信,其实有可能是不存在的,不过它他要是告诉你不存在的话,那就一定不存在)。

4、缓存击穿 && 缓存雪崩

=> 缓存击穿:刚刚有一个热点数据到了过期时间,被删掉了,不巧的是随后就有对这个数据的大量查询请求来了,由于已经被删,所以请求都发到数据库

Redis缓存那些事儿

 

=>缓存雪崩:一大批数据几乎同时过了有效期,然后又发生了很多对这些数据的请求,所以比起上一次这规模更大了。

Redis缓存那些事儿

 

=> 解决方案在应用程序中,把键值的过期时间随机一下(设置的均匀一些,至少别让大量数据集体失效),还设置了热点数据永不过期。

 

脚本宝典总结

以上是脚本宝典为你收集整理的Redis缓存那些事儿全部内容,希望文章能够帮你解决Redis缓存那些事儿所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。