专栏首页Clive的技术分享Memcached内存机制Memcached特点内存分配机制 - SlabAllocation内存使用机制 - LRU(Least Recently Used)优化思路

Memcached内存机制Memcached特点内存分配机制 - SlabAllocation内存使用机制 - LRU(Least Recently Used)优化思路

Memcached特点

  • 协议简单,基于文本行的协议
  • 基于Libevent的时间处理
  • 内置内存存储方式
  • 分布式缓存服务器(采用一致性哈希算法实现的客户端分布式,而非服务器端的分布式)

内存分配机制 - SlabAllocation

Memcached内存分配

  • Linux内置的Malloc()/Free()函数是按需分配内存,释放后若没有恰好相等的内存占用,那么就会产生内存碎片。
  • SlabAllocation按预先设定的大小,将内存分割为特定长度的块,以解决内存碎片。
  • 内存被分成若干Slab,每个Slab又被分成若干Chunk,相同大小的Chunk被放在同一Slab中。

内存使用机制 - LRU(Least Recently Used)

  • 已分配的内存不回收,而是直接重新利用;
  • 优先使用已过期的内存;
  • 内存不足时采用LRU机制,将长期不用的内存分配给新的记录。

优化思路

  • 设置合理的增长因子,控制内存合理消耗;
  • 调整缓存更新机制,在快失效时更新内存。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Redis事务涉及的watch、multi等命令

    作用: 用于监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。 用法:

    Clive
  • PHP常用魔术方法

    方法名称 使用场景 __construct 对象创建完成后第一个被对象自动调用的方法 __destruct 销毁一个类之前执行的一些操作 ...

    Clive
  • Mysql锁相关锁的分类锁的适用场景MyISAM表锁MyISAM写阻塞读的例子MyISAM读阻塞写例子MyISAM并发插入MyISAM读写并发MyISAM锁调度调节MyISAM锁调度行为解决读写冲突的

    锁类型/引擎 行锁 表锁 页锁 MyISAM 有 InnoDB 有 有 BDB(被InnoDB取代) 有 有 锁的分类 表...

    Clive
  • iOS标准库中常用数据结构和算法之内存池

    内存池提供了内存的复用和持久的存储功能。设想一个场景,当你分配了一块大内存并且填写了内容,但是你又不是经常去访问这块内存。这样的内存利用率将不高,而且无法复用。...

    欧阳大哥2013
  • 内存溢出和内存泄露

    内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了...

    Demo_Yang
  • 故障分析 | MySQL OOM 故障应如何下手

    前阵子处理这样一个案例,某客户的实例 mysqld 进程内存经常持续增加导致最终被 OOM killer。作为 DBA 肯定想知道有哪些原因可能会导致 OOM(...

    爱可生开源社区
  • 虚拟内存详解

    究其原因,监控系统计算的可用内存算法有偏差,他只关注了计算机的“实际”内存,忽略了计算机的虚拟内存。

    bisal
  • 软件性能测试(连载9)

    Linux内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。Linux的空间又分为内核空间和用户空间,在32位中,内核空间占1G,用户空间...

    小老鼠
  • Java架构师中的内存溢出和内存泄露是什么?实际操作案例!

    申请了内存用完了不释放,比如一共有 1024M 的内存,分配了 521M 的内存一直不回收,那么可以用的内存只有 521M 了,仿佛泄露掉了一部分;

    Java架构师进阶技术
  • 开发应该知道的Linux系统分析-内存篇

    用free监控内存free是监控linux内存使用状况最常用的指令,看下面的一个输出

    只喝牛奶的杀手

扫码关注云+社区

领取腾讯云代金券