腾讯CMEM的PHP扩展(转载)

题外话
最近公司在做相关的业务,由于Memcached协议缺少返回码,为了保证业务数据的安全性,不得已只好自己写个扩展来实现需求。

基于memcache扩展的2.2.6的稳定版开发而来。代码已经开源,有需要的朋友请拿走,License是PHP License,请自觉遵守。项目主页:http://code.google.com/p/cmem/

CMEM是什么
CMEM全称为Cloud Memory,是腾讯提供的高性能内存级持久化存储服务,适用于数据量小、访问量高、key-value存储的场景。
CMEM基于一个存储键/值对的hashmap,数据使用内存存储,并保证数据的持久性。

CMEM PHP Extension是什么
CMEM基于标准的Memcached协议以及接口,只是将数据获取接口增加返回值设定。
Memcached的Get协议没有设计返回码,所以Memcached API返回NO_DATA时,有可能是网络原因造成的,不能完全信任。

使用如下流程将是非常危险的,将造成用户数据初始化:

if(NO_DATA) {
    InitData();
}

为解决上述问题,CMEM提供了Memcahced文本扩展协议,增加两个扩展的命令get_ext, gets_ext,使客户端可以根据返回码判断数据是否存在。 这样可以避免网络和设备故障时get不到数据而导致用户数据被误初始化。

CMEM如何使用
在get具体的数据使用,传入两个引用变量$flag、$code:

flag是Memcache原有扩展自带的,在发送set命令时设置的标志项,使用和用法和以前一致;code是CMEM扩展新增的:当且仅当$code返回值为0时,get到的数据是可信的,其他情况,均不可信;

具体使用,请参见如下代码:

 1 //初始化CMEM类
 2 $mem = new CMEM;
 3
 4 //连接CMEM服务
 5 $mem->connect("127.0.0.1", 11211);
 6
 7 //保存key为cmem的数据
 8 $mem->set(‘cmem‘, ‘CMEM work nice‘, 0, 86400);
 9
10 //初始化$flag、$code,为引用传入准备
11 $flag = $code = -1;
12
13 //get方法,同时支持传入key组成的数组,同样返回的$code也是数组
14 $returnValue = $mem->get(‘cmem‘, &$flag, &$code);
15
16 //当且仅当$code返回值为0时,get到的数据是可信的,其他情况,均不可信
17 if($code == 0) {
18         echo "the value is safe, value is: {$returnValue}";
19 } else {
20         echo "the value is not safe, don‘t use it";
21 }

更多内容,比如类的使用以及方法对比、函数的使用以及函数对比请访问项目主页:http://code.google.com/p/cmem

时间: 2024-08-06 02:28:53

腾讯CMEM的PHP扩展(转载)的相关文章

Androidbaseadapterhelper源码分析与扩展(转载)

Androidbaseadapterhelper源码分析与扩展 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/44014941,本文出自:[张鸿洋的博客] 本篇博客是我加入Android 开源项目源码解析分析的一篇文章,初次加入,所以选了个比较简单的库,如果你曾经看过Android 快速开发系列 打造万能的ListView GridView 适配器对本篇博客就不会太陌生, base-adapter-helper就是完成类似万能

腾讯通RTX 群扩展插件 正式版许可授权

腾讯通 RTX 状态感知插件 正式版许可授权 此许可授权包含自定义总机号.授权使用时间至永久,授权用户数999. PS:感兴趣的朋友可以先到官网下载试用版进行功能测试,使用上满意后再来此处进行购买许可授权. 随着RTX企业用户的增大,越来越多的群组讨论在企业中普遍,但是RTX中的群需要在服务器添加,这样大大的受到局限:且群组没有资料共享库,资料不能及时共享:不能发布群公告等制约因素. 群功能扩展插件就是专门了为了解决上述问题设计的,使用之后,用户可以在客户端实现所有操作,实现群成员资料共享,大大

腾讯职场等级(转载自网络)

百度的技术,阿里的运营,腾讯的产品. 下面进入正题,谈一谈腾讯的人才战略.首先是腾讯的职级.1.职级腾讯职级体系分6级,最低1级,最高6级同时按照岗位又划分为四大通道,内部也叫“族”,比如:产品/项目通道,简称P族技术通道,简称T族市场通道,简称M族职能通道,简称S族以T族为例,分别为:T1:助理工程师 (一般为校招新人)T2:工程师T3:高级工程师3-1相当于阿里的p6+到p7(能力强可能到p7)T4:专家工程师T5:科学家T6:首席科学家目前全腾讯貌似就一个T6.每一级之间又分为3个子级,3

Selenium WebDriver 中鼠标和键盘事件分析及扩展[转载]

原文:http://www.ibm.com/developerworks/cn/java/j-lo-keyboard/ 概念 在使用 Selenium WebDriver 做自动化测试的时候,会经常模拟鼠标和键盘的一些行为.比如使用鼠标单击.双击.右击.拖拽等动作:或者键盘输入.快捷键使用.组合键使用等模拟键盘的操作.在 WebDeriver 中,有一个专门的类来负责实现这些测试场景,那就是 Actions 类,在使用该类的过程中会配合使用到 Keys 枚举以及 Mouse. Keyboard.

腾讯手游如何提早揭露游戏外挂风险?

目前腾讯SR手游安全测试限期开放免费专家预约!点击链接:http://wetest.qq.com/product/sr立即预约! 作者:sheldon,腾讯高级安全工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest导读 随着大量外挂.辅助.工作室等非法盈利团队借由移动游戏产业迅猛发展的东风趁虚而入,对游戏开发商和玩家来说都造成了不小的伤害,安全问题成为手游发展不容忽视的前提.本文告诉你如何从技术的角度来提前曝光这些安全问题和外挂风险. 安全无小事-安全测试开展思

【腾讯御安全】基于代理Application机制的Anddroid应用加壳方法

壳是指一个程序的外面再包裹上另外一段代码,保护里面的代码不被非法修改或反编译的程序.它们一般都先于程序运行,拿到控制权,然后完成它们保护软件的任务.对于Android APP来说,所有的实现逻辑都集成于DEX文件中,DEX文件是一个APP的核心所在,因此保护DEX文件被逆向或者修改尤其重要.Android应用的DEX加壳过程如下: 尽管上述DEX加壳过程中,关于如何对DEX进行加密或者利用其它方法对其进行处理的方法有很多,但是通过自定义DexClassLoader替换原DexClassLoade

转载:软件设计的七大原则

设计模式遵循的一般原则: 1.开-闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开发,对修 改关闭.说的是,再设计一个模块的时候,应当使这个模块可以在不被修改的前提下被扩展.换言之,应当可以在不必修改源代码的情况下改变这个模块的行为,在 保持系统一定稳定性的基础上,对系统进行扩展.这是面向对象设计(OOD)的基石,也是最重要的原则. 2.里氏代换原则(Liskov Substitution Principle,常缩写为.LSP)(1).由Barbar Li

【腾讯bugly干货分享】如何定位Obj-C野指针随机Crash(三):加点黑科技让Crash自报家门

本文主要介绍如何利用OC Runtime的特性,让OC野指针对象主动抛出自己的信息,秒杀某些全系统栈Crash. 陈其锋,腾讯SNG即通产品部音视频技术中心软件工程师,主要负责iOS平台音视频功能开发,热衷于移动开发,以及各类APP体验. (注:本文由于涉及一些技术比较猥琐,可能会引起处女座同学的不适,如果有任何疑问欢迎一起讨论.另外,本文只讨论Arm 32位情况) 为什么错误地址是0x55555561? 我们在前文里曾经介绍过在内存释放后填充0x55使野指针出现后数据不能访问,从而使野指针变成

【重磅推荐】2015年腾讯移动应用质量大数据报告

2015年,随着移动智能设备的普及,移动端用户的增速明显放缓:相比之下,由于云服务.众筹平台.推广平台等基础设施和服务的不断改善,极大降低了创业的门槛,越来越多人投身于移动应用的创新创业中. 想让用户在数百万应用中爱上你的产品,开发者除了要满足用户的需求外,还必须要在快速迭代的过程中保证产品比竞争对手有更好的质量. 在这份报告中,腾讯Bugly和腾讯优测会对2015年Android和iOS平台上的应用质量进行详细盘点,帮助你了解你的产品质量在行业中处于什么位置. 首先,让我们从整体上,回顾一下2