Memcached必知必会

主要特点

  • 基于C/S架构,协议简单
  • 基于libevent的事件处理
  • 自主内存管理
  • 基于客户端式的分布式实现

libevent

libevent是一套跨平台的事件处理接口的封装,高性能的事件触发的网络库,内部支持poll、select(Windows)、epoll(Linux)、kquque(BSD)、/dev/pool(Solaris)

Memcached使用其进行网络并发连接的处理,能够保持在很大并发情况下,仍然能够保持快速的响应能力。

自主内存管理

包括两部分:

  1. 数据存储方式:Slab Allocation
  2. 数据过期方式:Lazy Expiration + LRU

数据存储方式

Slab Allocation的原理是按照预先设定的大小,将整体分配的内存分割成特定长度的块(chunk),并将尺寸相同的块分成组(chunks);

  • Page:分配给Slab的内存空间,默认为1MB;Slab根据其大小切换成chunk
  • Chunk:用于缓存记录的内存空间
  • Slab Class:特定大小的chunk组

Memcached根据接收到数据的大小来决定使用哪个chunk;例如Slab Class存在50B,75B,100B等大小的chunk,进来一个80B的数据,则其会选择100B的chunk来将该数据缓存。【缺陷:80B使用100B的chunk,则剩下的20B无法使用,浪费了】

数据过期方式

  1. Lazy Expiration:当数据get时查看该记录的时间戳是否过期,过期则清除,这种方式为懒清除
  2. LRU:最近最少使用的缓存清除策略,大部分缓存默认采用这种策略,这里就不详细介绍

基于客户端的分布式

根据客户端自实现的负载均衡算法来实现,维护成本大

经验与技巧

Memcached一些特性和限制

  • 在 Memcached 中可以保存的item数据量是没有限制的,只有内存足够
  • Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程
  • 最大30天的数据过期时间 , 设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA 控制
  • 最大键长为250字节,大于该长度无法存储,常量 字节,大于该长度无法存储,常量KEY_MAX_LENGTH控制
  • 单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK进行控制,
  • 它是默认的slab大小
  • 最大同时连接数是200,通过 conn_init() 中的freetotal 进行控制,最大软连接数是1024,通过settings.maxconns进行控制
  • 跟空间占用相关的参数:影响slab的数据占用和步进方式
  • settings.factor=1.25
  • settings.chunk_size=48
  • settings.factor=1.25
  • settings.chunk_size=48

参考资料

  • Memcached原理
  • libevent基础知识

如果你也想要保持Stay Hungry Stay Foolish 和每天进步一点点 的精神,欢迎大家和我一起学习,每天都感受自己的成长。一起加油一起努力!!

如果觉得本文有帮助,请动动小手分享给更多人,一起学习!!

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

热门产品

php编程基础教程.pptx|php编程培训,php,编程,基础,教程,pptx
php编程基础教程.pptx

历史上的今天:04月20日

ThinkPHP5快速入门

ThinkPHP5快速入门目 录零、序言一、基础二、URL和路由三、请求和响应四、数据库五、查询语言六、模型和关联 (1)模型定义 (2)基础操作 (3)读取器和修改器 (4)类型转换和自动完成 (5)查询范围 (6)输入和验证 (7)关联 (8)模型输出七、视图和模板八、调试和日志九、API开发十、命令行工具十一、扩展十二、杂项SessionCookie验证

ThinkPHP5快速入门基础

ThinkPHP5快速入门基础一、基础快速入门 ( 一 ) :基础本章介绍了 ThinkPHP5 .0 的安装及基本使用 ,并给出了一个最简单的示例带你了解如何开始开发 ,主要包 含 :简介官网下载 omposer安装和更新CGit下载和更新目录结构运行环境入口文件调试模式控制器视图读取数据总结在学习 ThinkPHP5.0 之前 ,如果你还不理解面向对象和命名空间的概念 ,建议首先去PHP手册恶

热门专题

云南综合高中|云南综合高中
云南综合高中
金诺幼儿园(春城路金诺幼儿园)|昆明官渡区幼儿园,幼儿园报名,官渡区幼儿园,春城路幼儿园,幼儿园招生,学前班,昆明幼儿园,金诺幼儿园,环城南路幼儿园,石井路幼儿园
金诺幼儿园(春城路金诺幼儿园)
综合高中|云南综合高中,昆明综合高中,综合高中能考本一吗,综合高中和普通高中的区别,综合高中是什么意思,综合高中能参加全国统一高考吗,综合高中可以考哪些大学,综合高中的学籍是什么
综合高中
云南开放大学|云南开放大学报名,云南开放大学报考,云南开放大学,什么是云南开放大学,云南开放大学学历,云南开放大学学费,云南开放大学报名条件,云南开放大学报名时间,云南开放大学学历,云南开放大学专业
云南开放大学
易捷尔单招|易捷尔单招,易捷尔单招培训,易捷尔单招报名,易捷尔单招考试,易捷尔单招培训学校,易捷尔单招分数
易捷尔单招
APP开发|app开发_app开发公司_app软件开发_专业app开发_云南app开发公司_app定制_原生app开发定制
APP开发
云南网站建设|云南网站制作,网站建设,云南网站开发,云南网站设计,云南网页设计,云南网站建设公司,云南网站建设
云南网站建设
一年制中专|中专学历,中专是什么学历,中专是什么,中专有什么专业,中专升大专,一年制中专
一年制中专

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部