CMEM是什么?
CMEM全称为Cloud Memory,是腾讯提供的高性能内存级持久化存储服务,适用于数据量小、访问量高、key-value存储的场景。
CMEM基于一个存储键/值对的hashmap,数据使用内存存储,并保证数据的持久性。
CMEM基于标准的Memcached协议以及接口,只是将数据获取接口增加返回值设定。
Memcached的Get协议没有设计返回码,所以Memcached API返回NO_DATA时,有可能是网络原因造成的,不能完全信任。 使用如下流程将是非常危险的,将造成用户数据初始化:
if(NO_DATA) { InitData(); }
在get具体的数据使用,传入两个引用变量$flag、$code:
具体使用,请参见如下代码:
//初始化CMEM类 $mem = new CMEM; //连接CMEM服务 $mem->connect("127.0.0.1", 11211); //保存key为cmem的数据 $mem->set('cmem', 'CMEM work nice', 0, 86400); //初始化$flag、$code,为引用传入准备 $flag = $code = -1; //get方法,同时支持传入key组成的数组,同样返回的$code也是数组 $returnValue = $mem->get('cmem', &$flag, &$code); //当且仅当$code返回值为0时,get到的数据是可信的,其他情况,均不可信 if($code == 0) { echo "the value is safe, value is: <b>{$returnValue}</b>"; } else { echo "the value is not safe, don't use it"; }
CMEM类的用法与Memcache类的用法唯一区别就是将new Memcache变成new CMEM,其他均一致。(推荐此种方式)
//连接 $mem = new Memcache; $mem->connect("127.0.0.1", 11211); //保存数据 $mem->set('key1', 'This is first value', 0, 60); $val = $mem->get('key1'); echo "Get key1 value: " . $val ."<br />"; //替换数据 $mem->replace('key1', 'This is replace value', 0, 60); $val = $mem->get('key1'); echo "Get key1 value: " . $val . "<br />"; //保存数组 $arr = array('aaa', 'bbb', 'ccc', 'ddd'); $mem->set('key2', $arr, 0, 60); $val2 = $mem->get('key2'); echo "Get key2 value: "; print_r($val2); echo "<br />"; //删除数据 $mem->delete('key1'); $val = $mem->get('key1'); echo "Get key1 value: " . $val . "<br />"; //清除所有数据 $mem->flush(); $val2 = $mem->get('key2'); echo "Get key2 value: "; print_r($val2); echo "<br />"; //关闭连接 $mem->close();
$mem = new CMEM; $mem->connect("127.0.0.1", 11211);
相关链接
http://www.ccvita.com/450.html
http://code.google.com/p/cmem/
http://wiki.opensns.qq.com/wiki/CMEM