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实现WEB动态网页静态
Oct 09 PHP
php foreach 使用&(与运算符)引用赋值要注意的问题
Feb 16 PHP
ThinkPHP CURD方法之limit方法详解
Jun 18 PHP
Sublime里直接运行PHP配置方法
Nov 28 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
Zend Framework教程之Zend_Controller_Plugin插件用法详解
Mar 07 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
如何使用php等比例缩放图片
Oct 12 PHP
php页面跳转session cookie丢失导致不能登录等问题的解决方法
Dec 12 PHP
PHP控制反转(IOC)和依赖注入(DI)
Mar 13 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
Mar 03 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
PHILIPS D1835/D1875的电路分析与打理
2021/03/02 无线电
解析php中反射的应用
2013/06/18 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
PHP实现用户异地登录提醒功能的方法【基于thinkPHP框架】
2018/03/15 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
根据IP的地址,区分不同的地区,查看不同的网站页面的js代码
2013/02/26 Javascript
setInterval,setTimeout与jquery混用的问题
2013/04/08 Javascript
改变文件域的样式实现思路同时兼容ie、firefox
2013/10/23 Javascript
js获取IFRAME当前的URL的方法
2013/11/13 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
微信 java 实现js-sdk 图片上传下载完整流程
2016/10/21 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
Bootstrap3下拉菜单的实现
2017/02/22 Javascript
详谈JS中数组的迭代方法和归并方法
2017/08/11 Javascript
详解vue-element Tree树形控件填坑路
2019/03/26 Javascript
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
JQuery实现简单的复选框树形结构图示例【附源码下载】
2019/07/16 jQuery
vue 动态表单开发方法案例详解
2019/12/02 Javascript
JavaScript实现模态对话框实例
2020/01/13 Javascript
Vue基于iview table展示图片实现点击放大
2020/08/05 Javascript
[01:05]主宰至宝剑心之遗
2017/03/16 DOTA
用Python进行简单图像识别(验证码)
2018/01/19 Python
解决pycharm安装后代码区不能编辑的问题
2018/10/28 Python
python3字符串操作总结
2019/07/24 Python
Python实现将蓝底照片转化为白底照片功能完整实例
2019/12/13 Python
Python使用正则实现计算字符串算式
2019/12/29 Python
PyCharm最新激活码PyCharm2020.2.3有效
2020/11/18 Python
网友共享的几个面试题关于Java和Unix等方面的
2016/09/08 面试题
幼儿园安全检查制度
2014/01/30 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
财务负责人岗位职责
2015/02/03 职场文书
《灰雀》教学反思
2016/02/19 职场文书
优秀乡村医生事迹材料(2016精选版)
2016/02/29 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
Spring Boot 实现敏感词及特殊字符过滤处理
2021/06/29 Java/Android
Android存储中最基本的文件存储方式
2022/04/30 Java/Android