zoukankan      html  css  js  c++  java
  • memcached删除机制与大数据缓存问题

     

     一、LRU删除机制

      a) 当某个值过期后,并没有从内存删除,因此stats统计时,curr_item有其信息。

      b) get其值时,判断是否过期,如果过期就返回空并删除。

      c) 当添加新值去占用它的位置时,把它当成空chunk来占用位置。

      注:数据过期只是不让用户看到数据,并没有真正删除,该行为称为lazy expiration(惰性失效)。如果chunk占满了,又有新的值加入则根据LRU删除机制挤掉最近最少用的数据(最旧的)。

    二、分布式之取模算法的缺陷

      a) 假设有8台服务器,运行中突然down一台,则求余的底数变成了7,后果key9%/8==1变成key9%7==2 miss(没命中)

      。。。。。。

      key55%/8==7变成key55%7==6 miss(没命中)

      所以服务器在down短期内,命中率急剧下降。

      因此采用一致性哈希分布式算法实现。

    三、缓存雪崩现象

      一般是指某个节点失效,导致其他节点的缓存命中率下降,短时间内缺失大量缓存数据(或缓存数据大量失效)需要去数据库查询,造成数据库服务器崩溃。

      a) 把缓存设置为随机39小时的生命周期,不同时期失效,分散失效时间点。

      b) 把缓存时间调长,夜里(或服务器负载低的时候)跑脚本刷新缓存。

    四、缓存无底洞现象

      是指memcached连接频繁,效率下降了,因此添加了memcached节点,添加后连接频率高导致的问题仍然存在,该现象称之为无底洞现象。

      a) 对于memcachedredis这种key-value存储,key的设计可以参考mysql中表/列的设计,比如user表下的的agename列。把某一组key,按其共同前缀来分布,key应该设计为: user-133,而不是user-133-age,user-133-name.

    五、永久数据被踢现象

      a) 原因:惰性删除与LRU最少使用记录删除

      b) 解决:永久数据和非永久数据分开

  • 相关阅读:
    用例要素(非原创)
    边界接口设计
    项目管理平台架构
    内外网邮件自动转发
    Python技术公众号100天了
    将博客搬至CSDN
    Android项目真的要去做混淆(加密)处理
    【转】Android Gson的使用
    【转】在eclipse上使用Git
    在AChartEngine上绘图,手指标记当前位置
  • 原文地址:https://www.cnblogs.com/zgxblog/p/13220521.html
Copyright © 2011-2022 走看看