memcache 缓存穿透的问题
来源:互联网 发布:小猪熊网络 编辑:程序博客网 时间:2024/05/21 21:34
首先先了解下分布式锁先看这个链接
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点左右的时候,会有成千上万的用户同时访问《孤芳》媒资数据。然而单次从数据加载可能时间比较长,而且同时会有好多次相同的查询《孤芳》操作,这时候我们把《孤芳》这个查询操作进行锁定,其它相同的操作跳过,这样就保持了数据库的稳定
比如每晚8点,视频网站发布《孤芳不自赏》这个电视剧,发布之前,孤芳数据在缓存中是没有的。
在8点左右的时候,会有成千上万的用户同时访问《孤芳》媒资数据。然而单次从数据加载可能时间比较长,而且同时会有好多次相同的查询《孤芳》操作,这时候我们把《孤芳》这个查询操作进行锁定,其它相同的操作跳过,这样就保持了数据库的稳定
简单点的说:
热点数据,发生缓存穿透时候,会产生高频率的相同的数据库查询加载操作。我们通过redis.setnx给热点数据加个锁,这个锁就是为了过滤掉相同的查询操作,从而保证了数据库的稳定。
热点数据,发生缓存穿透时候,会产生高频率的相同的数据库查询加载操作。我们通过redis.setnx给热点数据加个锁,这个锁就是为了过滤掉相同的查询操作,从而保证了数据库的稳定。
菜鸟永远在努力中
0 0
- memcache 缓存穿透的问题
- memcache的分布式缓存问题
- memcache的分布式缓存问题
- 缓存穿透问题
- memcache 缓存失效问题
- 如何解决常见的缓存穿透、并发和失效问题?
- 如何解决常见的缓存穿透、并发和失效问题?
- memcache的分布式缓存
- Memcache缓存的使用
- 多应用共享memcache缓存带来的问题
- 缓存穿透与缓存雪崩的解决方案
- 缓存穿透
- 学习笔记:cache 和spring cache 技术---本地缓存-分布式缓存,缓存穿透,雪崩,和热点key的问题
- Discuz!的Memcache缓存实现
- Discuz!的Memcache缓存实现
- Discuz!的Memcache缓存实现
- Discuz!的Memcache缓存实现
- Discuz!的Memcache缓存实现
- C++ 内存对齐
- codeforces 766D Mahmoud and a Dictionary(带权并查集+map查询)
- for 续10
- bootpack.c中的PIC0_MIR遮断问题
- win10安装虚拟机并安装ubuntu
- memcache 缓存穿透的问题
- leecode 解题总结:40 Combination Sum II
- 求助!第一个hibernate程序报错 org.hibernate.MappingException: Unknown entity: com.pojo.User
- Odoo 的安装
- 数据库管理基础
- iOS项目本地化-(多语言处理)
- 关于flex,好像有12个属性很重要
- 计算机逻辑Introduction
- C# NX创建圆