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 相关文章推荐
用PHP发电子邮件
Oct 09 PHP
几种显示数据的方法的比较
Oct 09 PHP
php错误、异常处理机制(补充)
May 07 PHP
细谈php中SQL注入攻击与XSS攻击
Jun 10 PHP
关于PHP的相似度计算函数:levenshtein的使用介绍
Apr 15 PHP
Thinkphp实现MySQL读写分离操作示例
Jun 25 PHP
php结合正则获取字符串中数字
Jun 19 PHP
php实现网页缓存的工具类分享
Jul 14 PHP
使用symfony命令创建项目的方法
Mar 17 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
Jun 14 PHP
PHP pthreads v3使用中的一些坑和注意点分析
Feb 21 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 23 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过滤黑名单关键字的方法
2014/12/01 PHP
php微信公众平台开发类实例
2015/04/01 PHP
举例详解PHP脚本的测试方法
2015/08/05 PHP
JQuery的html(data)方法与<script>脚本块的解决方法
2010/03/09 Javascript
JSON中双引号的轮回使用过程中一定要小心
2014/03/05 Javascript
jquery xMarquee实现文字水平无缝滚动效果
2014/04/29 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
在Node.js中使用HTTP上传文件的方法
2015/06/23 Javascript
jquery的幻灯片图片切换效果代码分享
2015/09/07 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
微信小程序 网络请求(GET请求)详解
2016/11/16 Javascript
微信小程序通过api接口将json数据展现到小程序示例
2017/01/20 Javascript
javascript实现延时显示提示框效果
2017/06/01 Javascript
socket.io与pm2(cluster)集群搭配的解决方案
2017/06/02 Javascript
vue2.0 axios前后端数据处理实例代码
2017/06/30 Javascript
微信小程序定位当前城市的方法
2018/07/19 Javascript
详解KOA2如何手写中间件(装饰器模式)
2018/10/11 Javascript
Vue 实现输入框新增搜索历史记录功能
2019/10/15 Javascript
vue不操作dom实现图片轮播的示例代码
2019/12/18 Javascript
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
CSS3制作精致的照片墙特效
2016/06/07 HTML / CSS
利用CSS3实现平移动画效果示例代码
2016/10/12 HTML / CSS
简短证婚人证婚词
2014/01/09 职场文书
基层干部十八大感言
2014/01/19 职场文书
初三学生语文考试作弊检讨书
2014/12/14 职场文书
新生开学寄语大全
2015/05/28 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
SpringBoot整合Redis入门之缓存数据的方法
2021/11/17 Redis
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫
纯CSS打字动画的实现示例
2022/08/05 HTML / CSS