一.缓存雪崩现象

  缓存雪崩一般是由某个缓存节点失效,导致其他节点的缓存命中率下降, 缓存中缺失的数据去数据库查询,短时间内造成数据库服务器崩溃,

重启DB短期又被压跨,但新数据的缓存也更新一些,DB反复多次启动多次,缓存重建完毕,DB才稳定运行,或者是由于缓存周期性的失效,比如缓存失效周期相同,在一个时间点缓存同时失效,将有一个请求”峰值”, 严重者甚至会令DB崩溃

  解决方案:把缓存设置为不同的生命周期,这样不同时失效,把工作分担到各个时间点上去,也可以自己写脚本,放到业务比较空闲的时候自己刷新建立缓存,比如放到凌晨时分

二.缓存的无底洞现象 multiget-hole

  memcached的节点非常多,memcached 连接频率、效率下降,于是增加 memcached 节点, 发现因为连接频率导致的问题仍然存在称之为”无底洞现象”

  以用户信息为例: 一个用户有很多的信息,user1-age, user1-name,user1-height ,当服务器增多,用户的信息也被散落在更多的节点,user1-age在一个节点,user1-name在第二个节点上,user1-height在第三个节点上,

这时候同样是获取这个人的用户信息就要连接多个节点,节点越多要连接的节点也越多. 对于memcached的连接数,并没有随着节点的增多,而降低于是问题出现

解决方案:在保存用户信息的时候key键使用共同的前缀进行保存,如使用user1作为键,而不是user1-age为一个键,user1-name为一个键...

三.缓存穿透现象

  在按照key去缓存查询一个一定不存在的数据,由于缓存未命中需要从数据库查询,数据库未查到数据也不做缓存,并且对该key并发请求量很大,就会对系统造成很大的压力,这就是缓存穿透

  解决方案:当查询返回的数据为空时,我们仍然把这个空结果进行缓存并设置一个相对较短的生命周期

四.永久数据被踢现象

  缓存数据时已经设为永久有效,却莫名其妙的丢失了,这种现象是因为memcache的惰性删除机制,即LRU最近最少使用删除机制,

  当某个单元被请求时,memcache维护一个计数器,通过计数器来判断最近最少被使用的是谁就把谁踢出,即使是永久有效的数据,如果一直没有被使用,而库又满了的情况下,就会把这个永久数据踢出

  解决方案:永久数据和非永久数据分开存放

memcache缓存雪崩、缓存无底洞、缓存穿透、永久数据被踢现象的更多相关文章

  1. 13 Memcached 永久数据被踢现象

    一:Memcached 永久数据被踢现象(1)网上有人反映"memcached"数据丢失,明明设为永久不失效,却莫名其妙的丢失了. 其实这要从2个方面来找原因. 即使前面介绍的惰性 ...

  2. Memcache线上常见问题(缓存雪崩、缓存无底洞、永久数据被踢)

    缓存雪崩现象 一般是由于某个节点失效,导致其它节点的缓存命中率下降,缓存中缺失的数据直接去数据库查询,短时间内造成数据库服务器崩溃. 或者是由于缓存周期性失效,比如设置每隔6个小时失效一次,那么每6个 ...

  3. 老司机带你玩转面试(2):Redis 过期策略以及缓存雪崩、击穿、穿透

    前文回顾 建议前一篇文章没看过的同学先看下前面的文章: 「老司机带你玩转面试(1):缓存中间件 Redis 基础知识以及数据持久化」 过期策略 Redis 的过期策略都有哪些? 在聊这个问题之前,一定 ...

  4. 第三节:Redis缓存雪崩、击穿、穿透、双写一致性、并发竞争、热点key重建优化、BigKey的优化 等解决方案

    一. 缓存雪崩 1. 含义 同一时刻,大量的缓存同时过期失效. 2. 产生原因和后果 (1). 原因:由于开发人员经验不足或失误,大量热点缓存设置了统一的过期时间. (2). 产生后果:恰逢秒杀高峰, ...

  5. Redis缓存雪崩、击穿、穿透

    参考大佬 前言 Redis在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在Redis的使用和原理方面对小伙伴们进行360°的刁难.作为一个在互联网公司面一次拿一次offer的面霸(请允 ...

  6. Redis系列三 - 缓存雪崩、击穿、穿透

    前言 从学校出来,做开发工作也有一定时间了,最近有想系统地进一步深入学习,但发现基础知识不够扎实,故此来回顾基础知识,进一步巩固.加深印象. 最初开始接触编程时,总是自己跌跌撞撞.不断摸索地去学习,再 ...

  7. memcache 永久数据被踢

    1.memcache的slab chunk 就像公交车的坐位一样,有大小之分,还有活跃的状态. 2.代码 index.php -->插入数据,注意$value的大小和重复次数,跟chunk和其数 ...

  8. redis缓存穿透,缓存击穿,缓存雪崩原因+解决方案

    一.前言 在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是 ...

  9. Redis总结(五)缓存雪崩和缓存穿透等问题

    前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhong/category/771056.html .今 ...

随机推荐

  1. date、sleep和usleep命令

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.1 date命令 date用于获取和设置操作系统的时间,还 ...

  2. Perl的列表和数组

    列表和数组 列表 使用括号包围的元素,括号中的元素使用逗号隔开的是列表. 列表中的元素可以是字符串.数值.undef或它们的混合. 列表中的字符串元素需要使用引号包围. 空列表是括号中什么都没有的列表 ...

  3. ERP,ARP瘦身并如何删除。

    ERP,ARP瘦身 场景:由于ARP,ERP运行近10年,日志文件多而杂.清理ERP的日志文件有利于ERP的迁移. 1)ERP的相关日志文件如下: /ora1159/prod/prodcomn/adm ...

  4. CentOS 7.4 64位安装配置MySQL8.0

    第一步:获取mysql YUM源 进入mysql官网获取RPM包下载地址 https://dev.mysql.com/downloads/repo/yum/   image.png 点击下载   im ...

  5. 从零开始学安全(五)●Vmware虚拟机三种网络模式详解

    vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式).NAT(网络地址转换模式).Host-Only(仅主机模式). NAT(网络地址转换模式) NAT(网络地址转换)vm ...

  6. Centos 6.8 配置mysql数据库主从同步

    Mysql的主从复制至少是需要两个Mysql的服务,当然Mysql的服务是可以分布在不同的服务器上,也可以在一台服务器上启动多个服务,首先确保主从服务器上的Mysql版本相同. 一.安装部署mysql ...

  7. Could not get JDBC connection

    想学习下JavaWeb,手头有2017年有活动的时候买的一本书,还是全彩的,应该很适合我这种菜鸟技术渣. 只可惜照着书搭建了一套Web环境,代码和db脚本都是拷贝的光盘里的,也反复检查了数据库的连接情 ...

  8. 安装python3

    由于centos已经自带了python,但是没有python3,楼楼接下来自己去安装下.截止到本文python的最新版本为3.7.1,官网的地址为:https://www.python.org/ 下载 ...

  9. Codeforces Round #309 (Div. 2)

    A. Kyoya and Photobooks Kyoya Ootori is selling photobooks of the Ouran High School Host Club. He ha ...

  10. 不容易系列之一(hdu1465)错排+递推

    不容易系列之一 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...