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) 解决:永久数据和非永久数据分开

  • 相关阅读:
    Android开发之EditText属性详解
    android开发如何在页面之间传参
    jquery中attr和prop的区别
    Laravel 5.2--改变数据库字段值,编辑时候,默认选中
    Laravel 5.2--git冲突error: Your local changes to the following files would be overwritten by merge:
    Laravel 5.2--如何让表单提交错误,不清空?
    Apache 和 Tomcat联系和区别
    mac 上如何安装非app store上的下载的软件-------打开未知来源
    &#65279导致页面顶部空白一行解决方法
    面向对象设计的三个基本特征
  • 原文地址:https://www.cnblogs.com/zgxblog/p/13220521.html
Copyright © 2011-2022 走看看