傻大方


首页 > 学习 >

memcached|memcached全面剖析3memcached的删除机制和发展方向



按关键词阅读: 机制 全面 剖析 发展方向 删除 Memcached

1、memcached全面剖析3 memcached的删除机制和发展方向memcached全面剖析eC3. memcached的删除机制和发展方向下面是memcached全面剖析的第三部分 。
发表日:2021/7/16作者:前坂 。
(Toru Maesaka)原文链接:http:/gihyo. jp/dev/feature/01/memcached/0003memcached是缓存 , 所以数据不会永久保存在服务器上 , 这是向系统中引入 memcached的前提 。
本次介绍memcached的数据删除机制 , 以及memcached的最新发展方 向二进制协议(Binary Protocol)和外部引擎支持 。
mem 。

2、cached在数据删除方面有效利用资源数据不会真正从memcached中消失上次介绍过 , memcached不会释放已分配的内存 。
记录超时后 , 客户端就无法再看见 该记录(invisible,透明) , 其存储空间即可重复使用 。
Lazy Expirationmemcached内部不会监视记录是否过期 , 而是在get时查看记录的时间戳 , 检查记录 是否过期 。
这种技术被称为lazy (惰性)expiration 。
因此 , memcached不会在过期监视 上耗费CPU时间 。
LRU:从缓存中有效删除数据的原理memcached会优先使用已超时的记录的空间 , 但即使如此 , 也会发生追加新记录时空 间不足的情况 , 此时就要使 。

3、用名为Least Recently Used (LRU)机制来分配空间 。
顾名 思义 , 这是删除“最近最少使用”的记录的机制 。
因此 , 当memcached的内存空间不足时 (无法从slab class获取到新的空间时) , 就从最近未被使用的记录中搜索 , 并将其空 间分配给新的记录 。
从缓存的实用角度来看 , 该模型十分理想 。
不过 , 有些情况下LRU机制反倒会造成麻烦 。
memcached启动时通过“71”参数可以 禁止LRU,如下所示:$ memcached 1024启动时必须注意的是 , 小写的“-m”选项是用来指定最大内存大小的 。
不指定具体数 值则使用默认值64MB 。
指定“-M”参数启动后 , 内存用尽时memcac 。

【memcached|memcached全面剖析3memcached的删除机制和发展方向】4、hed会返回错误 。
话说回来 , memcached 毕竟不是存储器 , 而是缓存 , 所以推荐使用LRJ memcached的最新发展方向memcached的roadmap上有两个大的目标 。
一个是二进制协议的策划和实现 , 另一个 是外部引擎的加载功能 。
关于二进制协议使用二进制协议的理由是它不需要文本协议的解析处理 , 使得原本高速的memcached 的性能更上一层楼 , 还能减少文本协议的漏洞 。
目前已大部分实现 , 开发用的代码库中已 包含了该功能 。
memcached的下载页面上有代码库的链接 。
? http:/danga. com./memcached/download, bml二进制协议的格式协议的包为24字节的帧 。

5、 , 其后面是键和无结构数据(Unstructured Data) 。
实际的 格式如下(引自协议文档):Byte/ 0|1|2|3|0123456 7|0 1234567012345670123456 7!24/ COMMAND-SPECIFIC EXTRAS (as needed)+/ (note length in th extras length header field)m/ Key (as needed)+/ (note length in key length header field)n/ Value (as needed)+/ (note length is total body l 。

6、ength header field, minus+/ sum of the extras and key length body fields)Total 24 bytes如上所示 , 包格式十分简单 。
需要注意的是 , 占据了 16字节的头部(HEADER)分为请 求头(Request Header)和响应头(Response Header)两种头部中包含了表示包的有 效性的Magic字节、命令种类、键长度、值长度等信息 , 格式如下:Request HeaderByte/ 00123456 7|0 1234567012345670123456 70 MagicOpcodeKey length4; Ex 。

7、tras length Data typeReserved8 Total body length12 Opaque16 CASResponse HeaderByte/ 01 I 2 I 30123456 7|0 123 4 567012345670123 4 56 70 MagicOpcodeKey Length4 Extras length Data type Status8 Total body length12 Opaque16 CAS如希望了解各个部分的详细内容 , 可以checkout出memcached的二进制协议的代码 树,参考其中的docs文件夹中的protocol_binary. txt文档 。
HEADER中引人注目的地方看到HEADER格式后我的感想是 , 键的上限太大了!现在的memcached规格中 , 键长 度最大为250字节 , 但二进制协议中键的大小用2字节表示 。
因此 , 理论上最大可使用 65536字节感谢您的阅读 , 祝您生活愉快 。



    稿源:(未知)

    【傻大方】网址:/a/2021/0905/0024107142.html

    标题:memcached|memcached全面剖析3memcached的删除机制和发展方向


    上一篇:小鸟|小鸟和蒲公英作文500字

    下一篇:Part6|Part6痛苦的分离期