美文网首页
缓存的相关概念和应用

缓存的相关概念和应用

作者: 寻梦的尕柳 | 来源:发表于2016-05-11 13:58 被阅读81次

一般都是用Redis或者Memcached来做数据的缓存,让程序的读取效率更高,以此缓解数据库的压力。

缓存穿透

原因:我们在项目中使用缓存通常都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回。这个时候如果我们查询的某一个数据在缓存中一直不存在,就会造成每一次请求都查询DB,这样缓存就失去了意义,在流量大时,可能DB就挂掉了。有人利用不存在的key频繁攻击我们的应用,这就是漏洞。

解决办法:可以在查询时将不存在的key预先设定一个值。比如,"key" , “&&”。在返回这个&&值的时候,我们的应用就可以认为这是不存在的key,再次请求这个key,如果取到的值不再是&&,则可以认为这时候key有值了,从而避免了透传到数据库,从而把大量的类似请求挡在了缓存之中。

缓存并发

原因:有时候如果网站并发访问高,一个缓存如果失效,可能出现多个进程同时查询DB,同时设置缓存的情况,如果并发确实很大,这也可能造成DB压力过大,还有缓存频繁更新的问题。

解决办法:对缓存查询加锁,如果KEY不存在,就加锁,然后查DB入缓存,然后解锁;其他进程如果发现有锁就等待,然后等解锁后返回数据或者进入DB查询。

缓存失效

原因:高并发的时候,平时我们设定一个缓存的过期时间时,可能有一些会设置1分钟啊,5分钟这些,并发很高时可能会出在某一个时间同时生成了很多的缓存,并且过期时间都一样,这个时候就可能引发一当过期时间到后,这些缓存同时失效,请求全部转发到DB,DB可能会压力过重。

解决办法:将缓存失效时间分散开,比如我们可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。

总结

缓存并发和缓存失效都是在高并发的时候对压力的优化,缓存穿透很有必要在做缓存的时候加上解决的措施。

原文链接:缓存穿透、缓存并发、缓存失效之思路变迁 - 小程故事多

相关文章

  • 缓存的相关概念和应用

    一般都是用Redis或者Memcached来做数据的缓存,让程序的读取效率更高,以此缓解数据库的压力。 缓存穿透 ...

  • 缓存之相关概念和应用模式

    DNS 原理:http://www.ruanyifeng.com/blog/2016/06/dns.html[ht...

  • 如何正确的使用缓存

    1. 常见概念 在合理应用缓存前,需要了解缓存领域里相关的几个常用术语: 1)缓存命中:表示数据能够从缓存中获取,...

  • 缓存的相关概念

    cache在计算机组织结构中很重要,理解cache对编写性能友好的程序很有帮助。 1. Cache的历史 在科研领...

  • APP开发实战106-缓存实现

    27.4缓存实现 1为了在清除缓存的时候能够正常清除与应用相关的缓存,需将缓存文件存放在getCacheDir()...

  • Hibernate(十四)二级缓存

    一、Hibernate 缓存 缓存(Cache): 计算机领域非常通用的概念。它介于应用程序和永久性数据存储源(如...

  • 大型分布式系统中的缓存架构

    本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景。 缓存概述 缓存概述 缓存的分类 缓存主要...

  • 大型分布式系统中的缓存架构

    本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景。 缓存概述 缓存概述 缓存的分类 缓存主要...

  • 深入理解分布式系统中的缓存架构(上)

    本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景。 1 缓存概述 缓存概述 2 缓存的分类 ...

  • 理解分布式系统中的缓存架构(上)

    本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景。 1 缓存概述 2 缓存的分类 缓存主要分...

网友评论

      本文标题:缓存的相关概念和应用

      本文链接:https://www.haomeiwen.com/subject/zahurttx.html