Redis使用Eval多个键值自增的操作实例


Posted in PHP onNovember 04, 2016

在PHP上使用Redis 给多个键值进行自增,示例如下:

$set['money'] = $this->redis->hIncrByFloat($key, $hour .'_money', $data['money']);
$set['ip'] = $this->redis->hIncrBy($key, $hour .'_ip', $data['ip']);
$set['uv'] = $this->redis->hIncrBy($key, $hour .'_uv', $data['uv']);
$set['pv'] = $this->redis->hIncrBy($key, $hour .'_pv', $data['pv']);
$this->redis->hSet($key, $hour, array($data['money'], $data['ip'], $data['uv'], $data['pv']));

如果这样写可能需要请求五次,可以通过 Eval 方法来一次完成,大大提高效率

$script = 'local money = redis.call("hIncrByFloat", KEYS[1], ARGV[1], ARGV[2]);';
$script .= 'local ip = redis.call("hIncrBy", KEYS[1], ARGV[3], ARGV[4]);';
$script .= 'local uv = redis.call("hIncrBy", KEYS[1], ARGV[5], ARGV[6]);';
$script .= 'local pv = redis.call("hIncrBy", KEYS[1], ARGV[7], ARGV[8]);';
$script .= 'local val = money ..",".. ip ..",".. uv ..",".. pv;';
$script .= 'redis.call("hSet", KEYS[1], ARGV[2], val);';
$script .= 'return val;';
$result = $this->redis->evaluate($script, [$key, $hour, $hour .'_money', $data['money'], $hour .'_ip', $data['ip'], $hour .'_uv', $data['uv'], $hour .'_pv', $data['pv']], 2);
var_dump($result);

Redis 用的 Lua 语法,我也不熟悉,这个字符串拼接方式也很特别的是两个点号 “..”

money ..",".. ip ..",".. uv ..",".. pv
拼接后
0.01,1,2,3

以上这篇Redis使用Eval多个键值自增的操作实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
建立文件交换功能的脚本(三)
Oct 09 PHP
smarty实例教程
Nov 19 PHP
PHP网站基础优化方法小结
Sep 29 PHP
深入php多态的实现详解
Jun 09 PHP
ubuntu12.04使用c编写php扩展模块教程分享
Dec 25 PHP
在PHP中使用X-SendFile头让文件下载更快
Jun 01 PHP
ThinkPHP采用实现三级循环代码实例
Jul 18 PHP
thinkPHP使用post方式查询时分页失效的解决方法
Dec 09 PHP
ECSHOP完美解决Deprecated: preg_replace()报错的问题
May 17 PHP
2017年最好用的9个php开发工具推荐(超好用)
Oct 23 PHP
Laravel5.1 框架控制器基础用法实例分析
Jan 04 PHP
PHP内存溢出优化代码详解
Feb 26 PHP
php array_slice 取出数组中的一段序列实例
Nov 04 #PHP
PHP获取访问页面HTTP状态码的实现代码
Nov 03 #PHP
PHP之将POST数据转化为字符串的实现代码
Nov 03 #PHP
PHP读取文件的常见几种方法
Nov 03 #PHP
PHP自定义多进制的方法
Nov 03 #PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 #PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 #PHP
You might like
php下使用SimpleXML 处理XML 文件
2010/02/27 PHP
ThinkPHP设置禁止百度等搜索引擎转码(简单实用)
2016/02/15 PHP
PHP代码覆盖率统计详解
2020/07/22 PHP
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
2011/06/28 Javascript
js 幻灯片的实现
2011/12/06 Javascript
JavaScript实现基于Cookie的存储类实例
2015/04/10 Javascript
JavaScript中Null与Undefined的区别解析
2015/06/30 Javascript
JavaScript 常见安全漏洞和自动化检测技术
2015/08/21 Javascript
bootstrap输入框组使用方法
2017/02/07 Javascript
Javascript中click与blur事件的顺序详析
2017/04/25 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
jQuery实现腾讯信用界面(自制刻度尺)样式
2017/08/15 jQuery
详解vue项目的构建,打包,发布全过程
2017/11/23 Javascript
Vue.js实现可配置的登录表单代码详解
2018/03/29 Javascript
vue中如何让子组件修改父组件数据
2018/06/14 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
[03:54]Ehome出征西雅图 回顾2016国际邀请赛晋级之路
2016/08/02 DOTA
介绍Python中的一些高级编程技巧
2015/04/02 Python
python 实现网上商城,转账,存取款等功能的信用卡系统
2016/07/15 Python
Python常见工厂函数用法示例
2018/03/21 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
在Django的View中使用asyncio的方法
2019/07/12 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
matplotlib基础绘图命令之bar的使用方法
2020/08/13 Python
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
材料物理专业个人求职信
2013/12/15 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
教育读书笔记
2015/07/02 职场文书
护士岗位竞聘书
2015/09/15 职场文书
事业单位工作人员2015年度思想工作总结
2015/10/15 职场文书
《窃读记》教学反思
2016/02/18 职场文书
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python