微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Redis 几个容易弄混的概念

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐