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 文件状态缓存带来的问题
Dec 14 PHP
php adodb连接mssql解决乱码问题
Jun 12 PHP
PHP 5.3.1 安装包 VC9 VC6不同版本的区别是什么
Jul 04 PHP
PHP企业级应用之常见缓存技术篇
Jan 27 PHP
PHP中的正则表达式函数介绍
Feb 27 PHP
解析PHP可变函数的经典用法
Jun 20 PHP
PHP文件读取功能的应用实例
May 08 PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 PHP
PHP编程 SSO详细介绍及简单实例
Jan 13 PHP
Laravel学习教程之IOC容器的介绍与用例
Aug 15 PHP
laravel框架中间件 except 和 only 的用法示例
Jul 12 PHP
YII2框架中actions的作用与使用方法示例
Mar 13 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
Symfony数据校验方法实例分析
2015/01/26 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
PHP实现的redis主从数据库状态检测功能示例
2017/07/20 PHP
PHP操作Postgresql封装类与应用完整实例
2018/04/24 PHP
PHP使用HTML5 FileApi实现Ajax上传文件功能示例
2019/07/01 PHP
保证JavaScript和Asp、Php等后端程序间传值编码统一
2009/04/17 Javascript
『jQuery』取指定url格式及分割函数应用
2013/04/22 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
Ext JS添加子组件的误区探讨
2013/06/28 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
jQuery原生的动画效果
2015/07/10 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
jQuery验证插件validate使用详解
2016/05/11 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
js使用i18n实现页面国际化的方法
2017/05/09 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
JS实现图片幻灯片效果代码实例
2020/05/21 Javascript
[47:31]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.12
2020/12/16 DOTA
python递归实现快速排序
2018/08/18 Python
python制作mysql数据迁移脚本
2019/01/01 Python
python实现名片管理系统项目
2019/04/26 Python
pytorch加载自定义网络权重的实现
2020/01/07 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
解决Alexnet训练模型在每个epoch中准确率和loss都会一升一降问题
2020/06/17 Python
flask框架中的cookie和session使用
2021/01/31 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
美国时尚孕妇装品牌:A Pea in the Pod
2017/07/16 全球购物
Shopee新加坡:东南亚与台湾电商平台
2019/01/25 全球购物
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
Android笔试题总结
2014/11/29 面试题
海量信息软件测试笔试题
2015/08/08 面试题
民政工作个人总结
2015/02/28 职场文书
python图片灰度化处理的几种方法
2021/06/23 Python