ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis 几个容易弄混的概念

2021-08-11 14:35:59  阅读:166  来源: 互联网

标签:缓存 请求 删除 过期 Redis 概念 键值 弄混 volatile


redis能干啥?

MySQL说,其实有一大半的用户请求都是读操作,而且经常都是重复查询一个东西,浪费它很多时间去进行磁盘I/O。

后来有人就琢磨,是不是可以学学CPU,给数据库也加一个缓存呢?于是redis就诞生了!

缓存的数据都是在内存中,可是就算是在服务器上,内存的空间资源还是很有限的。

 

如何处理内存不足?

1、给缓存内容设置一个超时时间,具体设置多长交给应用程序们去设置,我要做的就是把过期了的内容从我里面删除掉,及时腾出空间就行了。

定期删除,我决定100ms就做一次,一秒钟就是10次!

2、惰性删除

那些原来逃脱我随机选择算法的键值,一旦遇到查询请求,被我发现已经超期了,那我就绝不客气,立即删除。

这种方式因为是被动式触发的,不查询就不会发生,所以也叫惰性删除!

3、内存淘汰策略

我提供了8种策略供应用程序选择,用于我遇到内存不足时该如何决策:

  • noeviction:返回错误,不会删除任何键值

  • allkeys-lru:使用LRU算法删除最近最少使用的键值

  • volatile-lru:使用LRU算法从设置了过期时间的键集合中删除最近最少使用的键值

  • allkeys-random:从所有key随机删除

  • volatile-random:从设置了过期时间的键的集合中随机删除

  • volatile-ttl:从设置了过期时间的键中删除剩余时间最短的键

  • volatile-lfu:从配置了过期时间的键中删除使用频率最少的键

  • allkeys-lfu:从所有键中删除使用频率最少的键

缓存穿透 && 布隆过滤器

有时候遇到些烦人的请求,查询的数据不存在,MySQL就要白忙活一场!不仅如此,因为不存在,我也没法缓存啊,导致同样的请求来了每次都要去让MySQL白忙活一场。我作为缓存的价值就没得到体现啦!这就是人们常说的缓存穿透。

 

缓存击穿 && 缓存雪崩

缓存击穿:有一个热点数据到了过期时间,被我删掉了,不巧的是随后就有对这个数据的大量查询请求来了,我这里已经删了,所以请求都发到你那里来了”。

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

找应用程序商量了,不仅把键值的过期时间随机了一下,还设置了热点数据永不过期,这个问题缓解了不少。

引用如下:

https://www.cnblogs.com/xuanyuan/p/13665170.html

标签:缓存,请求,删除,过期,Redis,概念,键值,弄混,volatile
来源: https://www.cnblogs.com/haoran8222/p/15127989.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有