memcache 缓存穿透的问题
2017-02-09 01:06
204 查看
首先先了解下分布式锁先看这个链接
http://blog.csdn.net/lihao21/article/details/49104695
后续我会再把zookeeper的分布式锁总结下
缓存指的就是memache,我们为了加快访问速度,会经常在memache存放大量数据吧。这些数据我们都会设置个有效期的。应用程序会有访问高峰期的,比如在高峰期之前,memache大量数据早就自动销毁了,高峰期来的时候,这时会大量的缓存穿透,传统型db性能很弱的,并发高了容易挂掉。
发生缓存穿透的时候,我们先不做数据加载操作,为了保证整个流程,我们会判断如果从缓存获取为空,就枷锁获取到后释放锁返回,其他线程执行相同操作等待等待。然后再执行db加载到缓存操作。
高并发时候,对加载某个数据会同时发起多次相同的操作,比如加载a 有100次,b有200次,c有500次。这些操作都是重复的,但数据库受不了呀。为了保证db的性能和顺利加载,我们会加一个锁定,锁定就是去除相同的操作,比如给a数据加个锁定,其它重复加载a的操作就跳多了。比如:redis.setnx( ‘a’, 1, 3 * 60)
举个例子:
比如每晚8点,视频网站发布《孤芳不自赏》这个电视剧,发布之前,孤芳数据在缓存中是没有的。
在8点左右的时候,会有成千上万的用户同时访问《孤芳》媒资数据。然而单次从数据加载可能时间比较长,而且同时会有好多次相同的查询《孤芳》操作,这时候我们把《孤芳》这个查询操作进行锁定,其它相同的操作跳过,这样就保持了数据库的稳定
简单点的说:
热点数据,发生缓存穿透时候,会产生高频率的相同的数据库查询加载操作。我们通过redis.setnx给热点数据加个锁,这个锁就是为了过滤掉相同的查询操作,从而保证了数据库的稳定。
菜鸟永远在努力中
http://blog.csdn.net/lihao21/article/details/49104695
后续我会再把zookeeper的分布式锁总结下
缓存指的就是memache,我们为了加快访问速度,会经常在memache存放大量数据吧。这些数据我们都会设置个有效期的。应用程序会有访问高峰期的,比如在高峰期之前,memache大量数据早就自动销毁了,高峰期来的时候,这时会大量的缓存穿透,传统型db性能很弱的,并发高了容易挂掉。
发生缓存穿透的时候,我们先不做数据加载操作,为了保证整个流程,我们会判断如果从缓存获取为空,就枷锁获取到后释放锁返回,其他线程执行相同操作等待等待。然后再执行db加载到缓存操作。
高并发时候,对加载某个数据会同时发起多次相同的操作,比如加载a 有100次,b有200次,c有500次。这些操作都是重复的,但数据库受不了呀。为了保证db的性能和顺利加载,我们会加一个锁定,锁定就是去除相同的操作,比如给a数据加个锁定,其它重复加载a的操作就跳多了。比如:redis.setnx( ‘a’, 1, 3 * 60)
举个例子:
比如每晚8点,视频网站发布《孤芳不自赏》这个电视剧,发布之前,孤芳数据在缓存中是没有的。
在8点左右的时候,会有成千上万的用户同时访问《孤芳》媒资数据。然而单次从数据加载可能时间比较长,而且同时会有好多次相同的查询《孤芳》操作,这时候我们把《孤芳》这个查询操作进行锁定,其它相同的操作跳过,这样就保持了数据库的稳定
简单点的说:
热点数据,发生缓存穿透时候,会产生高频率的相同的数据库查询加载操作。我们通过redis.setnx给热点数据加个锁,这个锁就是为了过滤掉相同的查询操作,从而保证了数据库的稳定。
菜鸟永远在努力中
相关文章推荐
- php缓存扩展频繁存储/读取数组引发CPU过高问题排查手记(php-memcache为例)
- memcache 缓存失效问题
- 学习笔记:cache 和spring cache 技术---本地缓存-分布式缓存,缓存穿透,雪崩,和热点key的问题
- 缓存穿透问题
- Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群
- 多应用共享memcache缓存带来的问题
- 缓存雪崩和缓存穿透问题解决方案
- 如何解决常见的缓存穿透、并发和失效问题?
- 缓存各种问题汇总:缓存雪崩和缓存穿透等问题
- Spring缓存穿透问题修复
- 一个Memcache+Hibernate自处理二级缓存问题
- 缓存穿透问题
- 缓存穿透问题
- 如何解决常见的缓存穿透、并发和失效问题?
- 关于缓存雪崩和缓存穿透等问题
- memcache 缓存失效问题(转)
- PHP使用Memcache时模拟命名空间及缓存失效问题的解决
- Redis总结(五)缓存雪崩和缓存穿透等问题
- 再谈缓存的穿透、数据一致性和最终一致性问题
- Redis缓存穿透、缓存雪崩、redis并发问题分析