批量获取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多线程编程之管道通信实例分析

本文实例讲述了PHP多线程编程之管道通信用法。分享给大家供大家参考。具体分析如下: 一个线程如果是个人英雄主义,那么多线程就是集体主义,你不再是一个独行侠,而是一个指挥家。 管道通信:...

php魔术函数__call()用法实例分析

本文实例分析了php魔术函数__call()用法。分享给大家供大家参考。具体如下: php魔术函数__call()的介绍,看完下面的实例就明白了: <?php clas...

PHP生成UTF8文件的方法

复制代码 代码如下:<?php $f=fopen("test.txt", "wb"); $text=utf8_encode("a!"); //先用函数utf8_encode将所需写...

PHP删除目录及目录下所有文件的方法详解

函数代码一:删除目录及目录下的所有文件复制代码 代码如下://循环删除目录和文件函数function delDirAndFile( $dirName ){if ( $handle = o...

PHP下操作Linux消息队列完成进程间通信的方法

关于Linux系统进程通信的概念及实现可查看:http://www.ibm.com/developerworks/cn/linux/l-ipc/   关于Linux系统消息队列的概念及实...