美文网首页redis
memcached 内存管理

memcached 内存管理

作者: 小蜗牛Aaron | 来源:发表于2020-03-03 07:04 被阅读0次

memcached 内存分配

启动 Memcached 时,-m指定内存大小,将信息保存到缓存中后才开始分配和保留物理内存。
通过 Slab allocation 机制对内存进行管理


内存分配

最大内存默认64,通过-m调整。
内存空间由slab classes构成,内存以slab page为单位去申请,分配到对应的slab class。
slab page :最大1兆,由1个或多个chunk组成
chunk:实际存储数据的单元

memcached 内存管理及设计

item

为键值数据的实际储存结构。item主要由公共属性、数据部分两个部分组成。

Chunk

由申请的连续内存块平均切分而成,用来存放Item数据,根据Item大小找到近似的Chunk。

Slab

管理特定大小的 chunk 的集合。Memcached每次默认分配的一个连续内存块为1M大小,它们被切分为不同大小
的chunk。

HashTable

Memcached的哈希表采用链接法实现。hashtable被分成多个桶bucket,哈希冲突,通过h_next指针形成bucket下链接的单向链表。

LUR

Memcached中每个slab中都维护了一个LRU链表,来组织该slab中已经被分配的item块,用于记录“最近最少使用”的item信息。

memcached缓存策略

在1.4.x及更早版本中,memcached中的LRU是标准的双向链表:有头部和尾部。将新物品插入头部,从尾部弹出驱逐物。
如果访问某个项目,则将其从其位置取消链接,然后重新链接到头部(此处称为“碰撞”),返回到LRU的顶部


下面这些情况,带有超时时间的记录会被删除

  1. 被人为删除
  2. 被set覆盖
  3. 被动删除:过期后,被get、add等命令访问
  4. 主动清除:LRU机制

Memcached缓存策略-- 分段LUR

分段LUR

每个Slab-class安排一个LRU,每个LRU拆分为四个子LRU类型。
每个存储的数据都有两个标志位:FETCHED、ACTIVE

  • FETCHED:该数据曾经被请求过
  • ACTIVE: 该数据有两次或以上被请求,当数据被移动时移除。
  • TEMP: 该队列中的 item TTL 通常只有几秒,不会被挪动。具体时间可配置 stats settings temporary_ttl选项
  • HOT:试用队列,数据不会长久存在该链表,一旦数据到达队列的尾部,则开始移动。如果物品处于活动状态, 它将被移动到WARM,非活动状态,它将被移动到COLD。
  • WARM: 访问量不大的数据如果物品处于活动状态, 它将被移动到warm头部,非活动状态,它将被移动到COLD。
  • COLD:最不活跃的数据
    回收时如果处于active状态,则移动到warm,否则删除。

memcached 缓存策略 LUR CRAWler

LRU爬虫是一个单独的后台线程专门用来处理失效的数据检查每个slab class中每个子LRU链表

相关文章

  • Memcached内存管理

    Memcached 内存管理 1.Memcached介绍 ​ Memcached是一套分布式的内存对象缓存系统...

  • Redis

    MySQL的执行过程 Redis、Memcached、MySQL 内存管理机制Memcached默认使用Slab ...

  • memcached 内存管理

    memcached 内存分配 启动 Memcached 时,-m指定内存大小,将信息保存到缓存中后才开始分配和保留...

  • 【问答】Redis

    Memcache和Redis的区别?Redis和memcached 的内存管理的区别? 网络IO模型:Memcac...

  • memcache简介

    Memcached 内存管理机制:Menceched 通过预分配指定的内存空间来存取数据,所有的数据都保存在 me...

  • Memcached内存管理源码分析

    版本 1.4.20 1 模型分析 memcached内存管理的模型与作业本“画格子给我们往格子里面写字”的逻辑很像...

  • Memcached LRU策略

    Memcached LRU介绍 ​ Memcached作为内存缓存,不可避免的问题之一就是内存的置换问题。我们...

  • Linux安装Mamcached

    Linux下memcached安装 什么是memcached? Memcached 是一个高性能的分布式内存对象缓...

  • memcache使用手册

    Memcached 教程 Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。 Memcached...

  • Memcached原理篇

    1.存储 memcached默认情况下采用了名为Slab Allocator的机制分配、管理内存,Slab All...

网友评论

    本文标题:memcached 内存管理

    本文链接:https://www.haomeiwen.com/subject/uonxlhtx.html