Redis 几个容易弄混的概念

时间:2021-08-11 15:42:18   收藏:0   阅读:9

redis能干啥?

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

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

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

 

如何处理内存不足?

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

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

2、惰性删除

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

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

3、内存淘汰策略

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

缓存穿透 && 布隆过滤器

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

 

缓存击穿 && 缓存雪崩

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

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

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

引用如下:

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

原文:https://www.cnblogs.com/haoran8222/p/15127989.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!