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 相关文章推荐
PHP4中实现动态代理
Oct 09 PHP
随机头像PHP版
Oct 09 PHP
php代码优化及php相关问题总结
Oct 09 PHP
PHP类的使用 实例代码讲解
Dec 28 PHP
php中取得URL的根域名的代码
Mar 23 PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 PHP
如何让搜索引擎抓取AJAX内容解决方案
Aug 25 PHP
PHP中array_slice函数用法实例详解
Nov 25 PHP
laravel容器延迟加载以及auth扩展详解
Mar 02 PHP
PHP Echo字符串的连接格式
Mar 07 PHP
php ajax confirm 删除实例详解
Mar 06 PHP
php使用json-schema模块实现json校验示例
Sep 28 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
DISCUZ 分页代码
2007/01/02 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
PHP随机数 C扩展随机数
2016/05/04 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
js获取提交的字符串的字节数
2009/02/09 Javascript
JavaScript去掉数组中的重复元素
2011/01/13 Javascript
这段js代码得节约你多少时间
2011/12/20 Javascript
中文路径导致unitpngfix.js不正常的解决方法
2013/06/26 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
js单独获取一个checkbox看其是否被选中
2014/09/22 Javascript
AngularJS中取消对HTML片段转义的方法例子
2015/01/04 Javascript
jquery实现网页的页面平滑滚动效果代码
2015/11/02 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
setTimeout时间设置为0详细解析
2018/03/13 Javascript
vue中引入mxGraph的步骤详解
2019/05/17 Javascript
Vue通过WebSocket建立长连接的实现代码
2019/11/05 Javascript
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
python将回车作为输入内容的实例
2018/06/23 Python
python3+pyqt5+itchat微信定时发送消息的方法
2019/02/20 Python
PyCharm-错误-找不到指定文件python.exe的解决方法
2019/07/01 Python
python处理大日志文件
2019/07/23 Python
美国性感内衣店:Yandy
2018/06/12 全球购物
专营店会计助理岗位职责
2013/11/29 职场文书
银行个人求职自荐信范文
2013/12/16 职场文书
《月光启蒙》教学反思
2014/03/01 职场文书
2014乡镇机关党员个人对照检查材料思想汇报
2014/10/09 职场文书
青年岗位能手事迹材料
2014/12/23 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
新年晚会开场白
2015/05/29 职场文书
大学班干部竞选稿
2015/11/20 职场文书
大学生党课心得体会
2016/01/07 职场文书
导游词之南京中山陵
2019/11/27 职场文书
我们认为中短波广播场强仪的最佳组合
2022/04/05 无线电
Spring Boot配合PageHelper优化大表查询数据分页
2022/04/20 Java/Android