【memcached】memcached中flags字段的作用
我们一般只注意到memcached的数据结构是key,value,今天看memcached源代码的时候,盯上了flags,没看明白。后来问了一下同事,说PHP当中使用flags标记,标识memcached数据是否需要经过压缩处理。
例如:
bool Memcache::add ( string $key, mixed $var [, int $flag [, int $expire]] )
- flag
-
Use MEMCACHE_COMPRESSED to store the item compressed (uses zlib).
看了一下memcached的协议,是这样定义一个item的:
Each item sent by the server looks like this:
VALUE <key> <flags> <bytes> [<cas unique>]\r\n
<data block>\r\n
- <key> is the key for the item being sent
- <flags> is the flags value set by the storage command
- <bytes> is the length of the data block to follow, *not* including
its delimiting \r\n
- <cas unique> is a unique 64-bit integer that uniquely identifies
this specific item.
- <data block> is the data for this item.
在memcached1.2.1之前为flags预留了16位,到了1.2.1以后预留了32位。对于服务器端而言,并不清楚你设置这些标记的作用。它并不知道你的数据是压缩过的,还是序列化存储的。
其实这只是客户端自己的一种定义,我们看Pecl的memcached模块的源代码:
#define MMC_SERIALIZED 1
#define MMC_COMPRESSED 2
if (flags & MMC_COMPRESSED) {
unsigned long data_len;
if (!mmc_compress(&data, &data_len, value, value_len TSRMLS_CC)) {
/* mmc_server_seterror(mmc, "Failed to compress data", 0); */
return -1;
}
/* was enough space saved to motivate uncompress processing on get */
if (data_len < value_len * (1 - pool->min_compress_savings)) {
value = data;
value_len = data_len;
}
else {
flags &= ~MMC_COMPRESSED;
efree(data);
data = NULL;
}
}
当flags包含MMC_COMPRESSED就对数据进行压缩处理。
也就是说,如果我们自己写一个memcached的client,也可以定义出更多的格式,json,xml或者别的。
其它关于 flags的文章请看
http://www.cnblogs.com/sunli/archive/2009/03/18/1415168.htm
【memcached】memcached中flags字段的作用的更多相关文章
- HCNP学习笔记之TCP中FLAGS字段SYN, FIN, ACK, PSH, RST, URG
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段. 含义: SYN 表示建立连接, ...
- tcp 中 FLAGS字段,几个标识:SYN, FIN, ACK, PSH, RST, URG.
在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG. 其中,对于我们日常的分析有用的就是前面的五个字段.它们的含义是: 1.SYN表示建立 ...
- MongoDB中_class字段的作用
我们知道,如果你用Java的Sping Data 框架映射Pojo为MongoDB数据时,数据库中会自动给你添加一个_class字段,那这个字段是干嘛用的呢?我们可以不可以不要这个字段呢? 直接上结论 ...
- 集合类中modCount字段的作用
ArrayList.LinkedList.HashMap中都有一个字段叫modCount.这个字段的用途,在ArrayList的父类AbstractList源码中有注释,说的很清楚: /** * Th ...
- maven中pom文件中name字段的作用
- ABAP 数据字典中的参考表和参考字段的作用
ABAP数据字典中的参考表和参考字段的作用 大家最初在SE11中创建表和结构的时候都会遇到一个问题,如果设定了某个字段为QUAN或者CURR类型,也就是数量或金额的时候,总会要求输入一个参考 ...
- SAP MM 物料主数据采购视图中的字段'Var. OUn'的作用?
SAP MM 物料主数据采购视图中的字段'Var. OUn'的作用? 物料主数据采购视图里有一个字段,叫做'Var. OUn'的, 如下图: 这个字段,笔者之前所参与的项目里,从来没有用过.所以,笔者 ...
- C#中的字段与属性的区别及属性的作用
C#中的字段与属性的区别及属性的作用 先上代码 public class Employee { //字段 private string name; //属性 public string Name { ...
- SQLSERVER中NULL位图的作用
SQLSERVER中NULL位图的作用 首先感谢宋沄剑提供的文章和sqlskill网站:www.sqlskills.com,看下面文章之前请先看一下下面两篇文章 SQL Server误区30日谈-Da ...
随机推荐
- Linux系统挂载NTFS文件系统(转载)
转自:http://hermesbox.blogbus.com/logs/47386987.html 今天尝试并成功的将一块500G的移动硬盘挂载到了RHEL5的系统上,甚感欣慰.想到也许以后自己或其 ...
- 【插件开发】—— 10 JFace开发详解
前文回顾: 1 插件学习篇 2 简单的建立插件工程以及模型文件分析 3 利用扩展点,开发透视图 4 SWT编程须知 5 SWT简单控件的使用与布局搭配 6 SWT复杂空间与布局搭配 7 SWT布局详解 ...
- linux下创建用户及组
linux下创建用户及组: 1.创建组 groupadd 组名 2.创建用户,并将用户添加到组 useradd 用户名 -g 组名 3.更改用户的密码 password 用户名 4.修改目录 ...
- 题解报告:hdu 2072 单词数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 题目: Problem Description lily的好朋友xiaoou333最近很空,他想 ...
- vue项目导出电子表格
方法一: 一.安装依赖(前面基本一样) npm install file-saver --save npm install xlsx --save npm install script-loader ...
- 设置UITableViewCell 选中时的背景颜色
自定义Cell如图 一个View上面放了四个Label 分别连线到.m文件中 @property (weak, nonatomic) IBOutlet UILabel *nameLabel; @pro ...
- hdu 6011 Lotus and Characters 贪心
http://acm.hdu.edu.cn/showproblem.php?pid=6011 先把数字从小到大排好,比如是-6.3.4这样, 然后处理出后缀和,当后缀和 <= 0的时候马上停止就 ...
- 转】MYSQL性能调优与架构设计之select count(*)的思考
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/5/ 感谢! Posted: Feb 7, 2013 Tag ...
- LN : leetcode 312 Burst Balloons
lc 312 Burst Balloons 312 Burst Balloons Given n balloons, indexed from 0 to n-1. Each balloon is pa ...
- mvc的生命周期
尽管每次都是从msdn里复制粘贴,但是还是有必要的,加深对mvc的理解和官方的表述. 了解 MVC 应用程序执行过程 发送给基于 ASP.NET MVC 的 Web 应用程序的请求首先通过 UrlRo ...