phpredis执行LUA脚本示例代码
更新时间:2020年6月30日 23:50 点击:1728
前言
本文主要给大家介绍了关于phpredis执行LUA脚本的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧
示例代码
$lua = <<<EOT local kws = {} local lrkws = {} local nkws = {} local kw_ids = {} local lr_ids = {} local n_ids = {} for kw in string.gmatch(KEYS[1], "[^|]+") do table.insert(kws, "kw:"..kw) end for kw in string.gmatch(KEYS[2], "[^|]+") do table.insert(lrkws, "lrkw:"..kw) end for kw in string.gmatch(KEYS[3], "[^|]+") do table.insert(nkws, "nkw:"..kw) end if #kws > 0 then kw_ids = redis.call('sinter', unpack(kws)) end if #lrkws > 0 then lr_ids = redis.call('sinter', unpack(lrkws)) end if #nkws > 0 then n_ids = redis.call('sinter', unpack(nkws)) end local cache_key = ARGV[1] for _, v in ipairs(kw_ids) do redis.call('sadd', cache_key, v) end for _, v in ipairs(lr_ids) do redis.call('sadd', cache_key, v) end for _, v in ipairs(n_ids) do redis.call('sadd', cache_key, v) end redis.call('expire', cache_key, 600) return redis.call('scard', cache_key) EOT; $ret = $redis->eval($lua, array("你好|谢谢", "", "hello", "cache_key"), 3); echo $ret;
例子中传入3个KEYS参数,1个ARGV参数。 KEYS参数是字符串,单词之间用 | 分割。
lua脚本最后将查询结果存入 ARGV参数指定的key中,并返回结果set的成员个数。
需要注意的是, eval函数的第3个参数为KEYS个数。 phpredis依据此值将KEYS和ARGV做区分。
参考网页: https://github.com/phpredis/phpredis/blob/develop/tests/RedisTest.php
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对猪先飞的支持。
相关文章
- 引发这个问题思考的是一段js程序的运行结果: 复制代码 代码如下: var i = 0; function a(){ for(i=0;i<20;i++){ } } function b(){ for(i=0;i<3;i++){ a(); } return i; } var Result = b(); 这段程序的运行结果是Re...2014-05-31
Java使用ScriptEngine动态执行代码(附Java几种动态执行代码比较)
这篇文章主要介绍了Java使用ScriptEngine动态执行代码,并且分享Java几种动态执行代码比较,需要的朋友可以参考下...2021-04-15- v-for标签可以用来遍历数组,将数组的每一个值绑定到相应的视图元素中去,下面这篇文章主要给大家介绍了关于在Vue.js中轻松解决v-for执行出错的三个方案,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。...2017-06-15
- 在本篇文章中给大家详细讲述了c#源码的执行过程,对此有需要的朋友们可以学习下。...2020-06-25
- C#中利用ScriptControl动态执行JS和VBS脚本的实现方法,需要的朋友可以参考下...2020-06-25
- 本文主要介绍了4种延时执行的方法,主要包括Update计时器,Invoke,协程,DoTween,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-07-07
- 利用PowerShell可以调用动态页面,然后再用 .bat 执行 PowerShell 脚本,最后把 .bat 添加到服务器的任务计划里面。OK,所有操作都做好了,.Net 定时执行了,是不是呢,有木有呢。...2020-06-25
@PostConstruct在项目启动时被执行两次或多次的原因及分析
这篇文章主要介绍了@PostConstruct在项目启动时被执行两次或多次的原因及分析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-08-03- 这篇文章主要为大家介绍了python自动化测试selenium执行js脚本的实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步...2021-11-13
- 这篇文章主要介绍了python 执行函数的九种方法,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下...2021-03-25
- 今天小编就为大家分享一篇C语言中system()执行cmd命令打开关闭程序的方法。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-04-25
- 这篇文章主要介绍了PostgreSQL 实现sql放入文件批量执行,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-02-04
- 这篇文章主要介绍了浅谈mysql执行过程以及顺序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-05-12
- 我们想在Windows中运行一个Python脚本,我们可以通过CMD,首先进入python文件所在的目录,之后运行。但是这样很麻烦,跟着本文操作就可以解决啦...2021-09-04
- 这篇文章主要介绍了PHP获取当前执行php文件名的代码,需要的朋友可以参考下...2017-03-12
- 这篇文章主要介绍了nginx中使用lua脚本的方法,本文介绍通过第三方模块lua-nginx-module实现lua脚本在nginx的调用,并附一个配置例子,需要的朋友可以参考下...2016-01-27
- 这篇文章主要介绍了MySQL语句执行顺序和编写顺序实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-06-24
- 这篇文章主要介绍了4种PHP异步执行的常用方式,帮助大家更好地分析php异步调用方法,熟练掌握,感兴趣的小伙伴们可以参考一下...2015-12-25
如何在thinkphp中使用windows计划任务定时执行php文件
这篇文章主要介绍了如何在thinkphp中使用windows计划任务定时执行php文件,对定时执行感兴趣的同学,可以参考下...2021-04-21- 无意之中发现特殊的图片上传可以绕过php gd库对图片处理,然后实现php执行,太危险了,下面来看看我是怎么实现的,然后你如何也存在这样的情况,赶快把漏洞补起吧。 我使用...2016-11-25