批量获取memcache值并按key的顺序返回的实现代码
通过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比较取出差,再去一一设置。
相关推荐
-
批量获取memcache值并按key的顺序返回的实现代码
通过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_15
-
php array_reverse 以相反的顺序返回数组实例代码
php array_reverse函数返回一个单元顺序相反的数组,该函数有两个参数,第一个参数表示需要处理的数组,第二个参数可选,规定是否保留原始数组的键名.本文章通过实例向大家讲解array_reverse函数的使用方法.需要的码农可以参考一下. array_reverse函数基本语法: array array_reverse ( array $array [, bool $preserve_keys = false ] ) array_reverse() 接受数组 array 作为输入并返回
-
Spring RedisTemplate 批量获取值的2种方式小结
目录 Spring RedisTemplate 批量获取值 1.利用mGet 2.利用PipeLine Java对Redis的批量操作RedisTemplate 1.背景 2.操作 3.说明 Spring RedisTemplate 批量获取值 1.利用mGet List<String> keys = new ArrayList<>(); //初始keys List<YourObject> list = this.redisTemplate.opsForValue().
-
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
本文实例讲述了javascript使用for循环批量注册的事件不能正确获取索引值的解决方法.分享给大家供大家参考.具体分析如下: 可能不少朋友会遇到一个问题,那就是当使用for循环批量注册事件处理函数,然后最后通过事件处理函数获取当前元素的索引值的时候会失败,先看一段代码实例: 复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset=" utf-8"> <meta name=&q
-
Redis获取某个前缀的key脚本实例
1.背景 在平时的维护中,经常会遇到要统计某个前缀的key有多少,在请求比较多的redis中,keys * 会直接导致阻塞. 可以采用scan的方式进行增量迭代,查询使用pipeline减少交互,提高效率. 2.scan命令的优缺点 SCAN命令的有SCAN,SSCAN,HSCAN,ZSCAN. SCAN的话就是遍历所有的keys 其他的SCAN命令的话是SCAN选中的集合. SCAN命令是增量的循环,每次调用只会返回一小部分的元素.所以不会有KEYS命令的坑. SCAN命令返回的是一个游标,从
-
Golang使用协程实现批量获取数据
目录 使用channel 使用WaitGroup 应用到实践 服务端经常需要返回一个列表,里面包含很多用户数据,常规做法当然是遍历然后读缓存. 使用Go语言后,可以并发获取,极大提升效率. 使用channel package main import ( "fmt" "time" ) func add2(a, b int, ch chan int) { c := a + b fmt.Printf("%d + %d = %d\n", a, b, c)
-
Go使用协程批量获取数据加快接口返回速度
目录 使用channel 使用WaitGroup 应用到实践 推荐go学习书籍,点击链接跳转京东官方商城购买. 服务端经常需要返回一个列表,里面包含很多用户数据,常规做法当然是遍历然后读缓存. 使用Go语言后,可以并发获取,极大提升效率. 使用channel Copy Highlighter-hljs package main import ( "fmt" "time" ) func add2(a, b int, ch chan int) { c := a + b
-
python实现批量获取指定文件夹下的所有文件的厂商信息
本文实例讲述了python实现批量获取指定文件夹下的所有文件的厂商信息的方法.分享给大家供大家参考.具体如下: 功能代码如下: import os, string, shutil,re import pefile import codecs, sys import wx import struct #输出中打印Unicode字符 #sys.stdout = codecs.lookup('utf-8')[-1](sys.stdout) def addToDict(theDict,PEfile_Pa
-
jquery attr()设置和获取属性值实例教程
语法: 1.attr("属性名"): //获取属性的值(取得第一个匹配元素的属性.通过这个方法可以方便的从第一个匹配元素中获取一个属性的值.如果元素没有相应属性,则返回undefined) 2.attr("属性名","属性值"); //设置属性的值(为所有匹配的元素设置一个属性值) 3.attr("属性名","函数值"); //设置属性的函数值(为所有匹配的元素设置一个计算的属性值.不提供值,而是提供一个函
-
Map获取键值,Map的几种遍历方法总结(推荐)
Map获取键值 Map以按键/数值对的形式存储数据,和数组非常相似,在数组中存在的索引,它们本身也是对象. Map的接口 Map---实现Map Map.Entry--Map的内部类,描述Map中的按键/数值对. SortedMap---扩展Map,使按键保持升序排列 关于怎么使用,一般是选择Map的子类,而不直接用Map类. 下面以HashMap为例 public static void main(String args[]) { HashMap hashmap =new HashMap();
随机推荐
- JavaScript获取系统自带的颜色选择器功能(图)
- 脚本
- asp.net 继承自Page实现统一页面验证与错误处理
- 用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
- php.ini中的php-5.2.0配置指令详解
- Python虚拟环境Virtualenv使用教程
- redhat 5.4下安装MYSQL全过程
- MySQL-group-replication 配置步骤(推荐)
- IE8 chrome中table隔行换色解决办法
- CentOS7编译安装新版LNMP环境
- javascript 兼容各个浏览器的事件
- vuejs如何配置less
- js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
- VS2015安装之后加装Sql server2014详细步骤
- jquery获取点击控件的绝对位置简单实例
- rsync相对于其他同步工具的优缺点介绍
- 动态组合SQL语句方式实现批量更新的实例
- c# 应用NPOI获取Excel中的图片,保存至本地的算法
- C#使用Directoryinfo类获得目录信息和属性的方法
- Cakephp 执行主要流程