批量获取memcache值并按key的顺序返回的实现代码

yipeiwu_com6年前PHP代码库
通过memcached的getMulti函数来批量获取如下15个ID的值。
31639,33878,177410,9735,589,12076,25953,22447,15368,15358,33853,26658,26659,12477,15366

$md->getMulti($arr_id);
返回的顺序:
line_31639,line_33878,line_177410,line_9735,line_589,line_12076,line_25953,line_22447,line_15368,line_15358,line_33853,line_26658,line_26659,line_12477,line_15366,

一台memcache时返回是正确的,在有多台memcache时就无法一一对应的按顺序返回。

这时需要使用Memcached::GET_PRESERVE_ORDER才能按顺序返回数据:
$arrs = $mem->getMulti($arr_id, $cas, Memcached::GET_PRESERVE_ORDER);
返回的顺序:
line_31639,line_33878,line_9735,line_589,line_22447,line_15358,line_33853,line_26658,line_177410,line_12076,line_25953,line_15368,line_26659,line_12477,line_15366,

这其中,如果有没有命中的变量,那么$cas就起到作用了。$cas返回了命中的变量,遍历$cas取出已命中的变量组成数据,然后通过array_diff函数与$arr_id比较取出差,再去一一设置。

相关文章

PHP 出现乱码和Sessions验证问题的解决方法!

在PHP脚本中读出中文或者其他语言文字为乱码的时候,首先检查你的文件格式是不是用UTF8的编码格式保存的。如果不是请用UltraEdit...等一些对UTF8支持转换的工具转换一下,最好...

PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】

PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】

本文实例讲述了PHP编程实现多维数组按照某个键值排序的方法。分享给大家供大家参考,具体如下: 实现对多维数组按照某个键值排序的两种解决方法(array_multisort和array_s...

在WordPress中使用wp_count_posts函数来统计文章数量

做一个全站统计是不是很酷?长久的博客越来越少,何不给自己的一个统计,看看自己在这个博客上努力了多少,不但给自己也给游客,wp_count_posts是在 WordPress 中用来统计文...

优化PHP代码的53条建议

1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。 2、$row['id'] 的速度是$row[id]的7倍。 3、echo 比 print 快,...

PHP中使用hidef扩展代替define提高性能

网站需要新加一个常量,打开了本地的config.php文件,想到了几年前测试过的hidef以及apc提升define性能的方案。 我的程序中有对开发、测试、生产服务器分别做了不同的配置,...