在php中,可以通过redis执行lua脚本

1、脚本

  1. <?php

  2. $redis = new Redis(); #实例化redis类

  3. $redis->connect('127.0.0.1'); #连接服务器

  4. $lua = <<<SCRIPT

  5. return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}

  6. SCRIPT;

  7. //对应的redis命令如下 eval "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second

  8. $s = $redis->eval($lua,array('key1','key2','first','second'),2);

  9. var_dump($s);

  10. $redis->close(); #关闭连接

  11. ?>

2、代码解析
1)eval() 方法

redis->eval($lua, array('key1','key2','first','second'),2);

eval方法的参数 3个:
第一个参数:脚本代码
第二个参数:参数数组,
第三个参数:是个整数,表示第二个参数中的前几个是key参数,剩下的都是附加参数

2)这个执行的对应命令如下

eval “return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}” 2 key1 key2 first
second

解释:

return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}

Lua 脚本

redis->eval($lua, array(‘key1’,‘key2’,‘first’,‘second’),2);

$lua是Lua脚本;
key1 和 key2 是键名参数,分别使用 KEYS[1] 和 KEYS[2] 访问;
first 和 second 是附加参数,可以通过 ARGV[1] 和 ARGV[2] 访问它们;
数字 2 指定了键名参数的数量;

来源:https://blog.csdn.net/JineD/article/details/108645752

PHP中使用redis 执行lua脚本相关推荐

  1. PHP中使用redis执行lua脚本示例

    一.引言 redis学了一段时间了,基本的东西都没问题了.从今天开始讲写一些redis和lua脚本的相关的东西,lua这个脚本是一个好东西,可以运行在任何平台上,也可以嵌入到大多数语言当中,来扩展其功 ...

  2. redis执行lua脚本

    从redis 2.6.0版本开始,redis内置了Lua解释器,并提供了eval命令来解析Lua脚本求值. 1. 语法格式 语法: eval script numkeys keys args 参数: ...

  3. 【已解决】Java 项目中利用 Redis 配合 Lua 脚本对短信推送消息做推送限制

  4. redis之lua脚本: 原子性 调试 嵌入高级语言

    实验环境: redis: 6.0.9 redis执行lua脚本时, 出错不会回滚(rollback) 我们知道, 使用lua脚本可以在执行一串redis命令时, 实现一定原子性(lua脚本中多条指令执 ...

  5. Redis:EVAL执行Lua脚本

    EVAL 脚本 numkeys 键[键...] arg [arg ...] 自Redis2.6.0版本起可用. 时间复杂度:取决于执行的脚本. EVAL介绍 EVAL和EVALSHA用于从Redis2 ...

  6. Redis进阶-lua脚本

    文章目录 Pre 语法 jedis操作lua 好处 lua实战 注意事项 Pre Redis在2.6推出了脚本功能,允许开发者使用Lua语言编写脚本传到Redis中执行. 语法 从Redis2.6.0 ...

  7. nx set 怎么实现的原子性_【redis进阶(1)】redis的Lua脚本控制(原子性)

    [toc] 为什么要用lua 减少网络开销:本来5次网络请求的操作,可以用一个请求完成,原先5次请求的逻辑放在redis服务器上完成.使用脚本,减少了网络往返时延. 原子操作:Redis会将整个脚本作 ...

  8. Redis 使用 Lua 脚本进行原子操作

    Redis 使用 Lua 脚本进行原子操作 Intro 之前写过一篇文章也是 Redis 使用 LUA 脚本实现分布式的 CAS 操作,可以参考:基于 Redis 实现 CAS 操作 最近使用 Red ...

  9. 红包雨中:Redis 和 Lua 的邂逅

    2018年,王思聪的冲顶大会,西瓜视频的百万英雄,再到映客的芝士超人,直播答题火爆全网. 我服务的一家电商公司也加入了这次热潮,技术团队研发了直播答题功能.答题结束之后,红包会以红包雨的形式落下,用户 ...

最新文章

  1. 自拟计算机作文100字,玩电脑作文100字胡佳慧
  2. VsCode中文乱码解决方法
  3. Java的多线程问题追根溯源。
  4. 吴恩达机器学习Ex2
  5. 汉澳sinox2014x64server已经能够下载
  6. fir.im 持续集成技术实践
  7. 《悦趣式连锁反应》玩转STEM教育!529块积木元件,N+1款炫酷模型
  8. 怎么用git将本地代码上传到远程服务器_git在远程服务器创建项目并将本地代码推送到服务器上...
  9. pdf虚拟打印机下载win7_虚拟打印机(smartprinter) v4.2官方版
  10. python set集合转numpy.array
  11. ps软件与计算机不兼容怎么办,电脑有Photoshop软件但是却无法打开PSD文件该怎么办-电脑自学网...
  12. 用html编写古诗词欣赏,品析古诗词画面描写之技巧
  13. 如何解决服务器响应过慢的问题,服务器响应速度慢的处理方法
  14. 开拓者队医当选年度最佳 球迷:罗伊情何以堪
  15. Python基础——文件
  16. bing每日壁纸_如何将Bing的每日背景用作Ubuntu壁纸
  17. x7 z8750 linux,GPD Pocket 7.0英寸 口袋笔记本电脑(Atom x7-Z8750、8GB、128GB、触屏)
  18. 杰理-AC632x开发之usb无法下载问题和原因
  19. 请问想考软考,零基础的话,哪个证书最好考呢
  20. Python实现手机号码归属地查询功能

热门文章

  1. QT的QDesignerTaskMenuExtension类的使用
  2. 27.垃圾收集器(Serial收集器、ParNew收集器、Parallel收集器、Parallel Old 收集器、CMS收集器、G1收集器、常用的收集器组合)
  3. 常见RAID的各级别的特性简介(RAID0、1、5、6、10)
  4. 1.Maven+SpringMVC+Eclipse软件安装配置,Maven报插件错误,Eclipse总是卡死的解决办法,导入一个maven工程后 一直显示importing maven project
  5. 7.MongoDB java CRUD
  6. 根据不同的操作系统读取配置文件/java读取属性文件代码
  7. ubunto用户切换
  8. 【tensorflow】Sequential 模型方法
  9. mysql如何drop数据库_mysql drop database删除数据库命令实例讲解
  10. 小猪佩奇python_一段代码画出小猪佩奇社会人 Python