zoukankan      html  css  js  c++  java
  • memcached内存模型

    内存管理

    • 内存结构
    1. 把内存划分成不同的slab class仓库
    2. 把仓库切分成不同尺寸的小块(chunk),用来存储缓存数据
    • 数据内存分配
    1. 首先根据数据的大小找到对应的slab class
    2. 找到空闲的chunk,存储数据
    3. 如果无空闲的chunk,会采用LRU算法删除旧数据,然后存储数据
    • 内存浪费问题
      由于chunk的大小是固定的,且待存储数据大小<= chunk大小,这样会造成内存的浪费,该问题无法彻底解决,可通过修改增长因子来改善

    删除机制

    1. 当某个值过期后,并没有从内存删除, 因此,stats 统计时, curr_item 有其信息
    2. 当某个新值去占用他的位置时,当成空 chunk 来占用.
    3. 当 get 值时,判断是否过期,如果过期,返回空,并且清空, curr_item 就减少了.

    注:这个过期,只是让用户看不到这个数据而已,并没有在过期的瞬间立即从内存删除. 这个称为 lazy expiration, 惰性失效.
    好处--- 节省了 cpu 时间和检测的成本

    存储限制

    • key 的长度: 250 字节, (二进制协议支持 65536 个字节)
    • value 的限制: 1m,一般都是存储一些文本,如新闻列表等等,这个值足够了. 内存的限制: 32位下最大设置到 2g.如果有30G数据,一般建议多实例存储
  • 相关阅读:
    在CI框架中的配置整合amfphp
    php操作memcache的使用【转】
    notepad++ 快捷键大全
    utf8_general_ci和utf8_unicode_ci的比较
    50个必备的实用jQuery代码段
    强制浏览器下载PDF文件
    Ajax不能接受php return值的原因
    Proftpd mysql认证配置文档
    CI公用模型
    sublime 相关配置和快捷键
  • 原文地址:https://www.cnblogs.com/warking/p/6924441.html
Copyright © 2011-2022 走看看