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中Date获取时间不正确怎么办
Jun 05 PHP
php入门教程 精简版
Dec 13 PHP
析构函数与php的垃圾回收机制详解
Oct 28 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
php简单实现快速排序的方法
Apr 04 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
Sep 11 PHP
Zend Framework数据库操作技巧总结
Feb 18 PHP
PHP让数组中有相同值的组成新的数组实例
Dec 31 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
laravel实现按时间日期进行分组统计方法示例
Mar 23 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
PHP中__set()实例用法和基础讲解
Jul 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+java实现自动新闻滚动窗口
2006/10/09 PHP
php绘图之在图片上写中文和英文的方法
2015/01/24 PHP
PHP比较运算符的详细介绍
2015/09/29 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
extjs 学习笔记(一) 一些基础知识
2009/10/13 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
javascript连续赋值问题
2015/07/08 Javascript
Angular.JS中的指令引用template与指令当做属性详解
2017/03/30 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
详解VUE-地区选择器(V-Distpicker)组件使用心得
2018/05/07 Javascript
JavaScript字符串处理常见操作方法小结
2019/11/15 Javascript
[45:50]完美世界DOTA2联赛PWL S3 CPG vs Forest 第二场 12.16
2020/12/17 DOTA
Python编码类型转换方法详解
2016/07/01 Python
python批量查询、汉字去重处理CSV文件
2018/05/31 Python
python实现屏保计时器的示例代码
2018/08/08 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
python实现网页自动签到功能
2019/01/21 Python
python 弹窗提示警告框MessageBox的实例
2019/06/18 Python
python 使用plt画图,去除图片四周的白边方法
2019/07/09 Python
Django 拆分model和view的实现方法
2019/08/16 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
关于老式浏览器兼容HTML5和CSS3的问题
2016/06/01 HTML / CSS
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
新闻报道策划方案
2014/06/11 职场文书
纪检干部对照检查材料
2014/08/22 职场文书
女生抽烟检讨书
2014/10/05 职场文书
行风评议整改报告
2014/11/06 职场文书
「天才王子的赤字国家重生术」妮妮姆·拉雷粘土人开订
2022/03/21 日漫
Go web入门Go pongo2模板引擎
2022/05/20 Golang
MySQL中正则表达式(REGEXP)使用详解
2022/07/07 MySQL