在PHP中使用redis来操作lua脚本,使用$redis->eval()命令时出错,参数传递无效

使用$redis->eval命令时传递三个参数,第一个为lua脚本文件,第二个为key,第三个参数为key的个数
向lua中传递参数时,在key中定义好,即可,示例正确代码

用lua脚本循环
eval "local rst={}; for i,v in pairs(KEYS) do rst[i]=redis.call(‘hgetall‘, v) end; return rst" 2 user:1 user:2

  

$z=$redis->EVAL(‘local rst={}; for i,v in pairs(KEYS) do rst[i]=redis.call(\‘get\‘, v) end; return rst‘,$r,count($r));

  

原文地址:https://www.cnblogs.com/saonian/p/11608654.html

时间: 2024-11-07 04:03:30

在PHP中使用redis来操作lua脚本,使用$redis->eval()命令时出错,参数传递无效的相关文章

StackExchange.Redis加载Lua脚本进行模糊查询的批量删除和修改

前言 使用StackExchange.Redis没有直接相关的方法进行模糊查询的批量删除和修改操作,虽然可以通过Scan相关的方法进行模糊查询,例如:HashScan("hashkey", "*key*"),然后再使用相关的方法进行相关的批量操作,但是如果缓存数据量比较大,效率低下,那么可以使用Lua脚本进行模糊查询的批量操作:ScriptEvaluate(LuaScript.Prepare(...)). 通过keys进行模糊查询后的批量操作 批量删除 1 var

redis翻译_redis lua脚本

Available since 2.6.0.  加入版本2.6 Time complexity: Depends on the script that is executed. 时间复杂度: 取决于脚本的执行 出处:http://blog.csdn.net/column/details/redisbanli.html Introduction to EVAL  介绍EVAL EVAL and EVALSHA are used to evaluate scripts using the Lua i

Php+Redis 实现Redis提供的lua脚本功能

<?php require_once "predis-0.8/autoload.php"; $config['schema'] = 'tcp'; $config['host']= "192.168.1.7"; $config['port'] = 6379; $redis = new Predis\Client($config); class wode extends Predis\Command\ScriptedCommand { public functio

python redis客户端使用lua脚本

有一个需求,为一个key设置一个field存储时间戳,每当有新数据,判断新数据时间戳是否>之前的时间戳,如果是,更新时间戳,由于依赖中间执行结果,所以使用lua减少客户端和服务端通信次数 #!/usr/bin/python # -*- coding: utf-8 -*- import redis r = redis.Redis("127.0.0.1") lua = """ local key = KEYS[1] local field = ARGV[

使用RedisTemplate+Lua脚本实现Redis分布式锁

分布式锁一般有三种实现方式:1. 数据库乐观锁:2. 基于Redis的分布式锁:3. 基于ZooKeeper的分布式锁.本篇博客将介绍第二种方式,基于Redis实现分布式锁. 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 互斥性.在任意时刻,只有一个客户端能持有锁. 不会发生死锁.即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁. 具有容错性.只要大部分的Redis节点正常运行,客户端就可以加锁和解锁. 解铃还须系铃人.加锁和解锁必须是同

C#对操作“&#215;&#215;”的回复消息正文进行反序列化时出错

主要原因webservice返回值的长度超过readerQuotas中的了maxStringContentLength值,造成返回值截断,不完整,反序列化时出错. 解决方案,在appconfig中,在某些值后面加2个0,保证长度不会被超过,下图是我改后的代码,一般情况下都一样,可以借鉴.

Redis数据操作之无序集合 | Redis

| Redis 的集合以无序的方式储存多个各不相同的元素 # 用户可以快速地向集合添加元素,或者从集合里面删除元素,也可以对多个集合 进行集合运算操作,比如计算并集,交集和差集. | 元素操作 -- 添加元素     sadd key element [element ...]     # 将一个或多个元素添加到给定的集合里面,已经存在于集合的元素会         自动被忽略,命令返回新添加到集合的元素数量. -- 移除元素     srem key element [element ...]

在redis中使用lua脚本

在实际工作过程中,可以使用lua脚本来解决一些需要保证原子性的问题,而且lua脚本可以缓存在redis服务器上,势必会增加性能. 不过lua也会有很多限制,在使用的时候要注意. 在Redis中执行Lua脚本有两种方法:eval和evalsha eval EVAL script numkeys key [key ...] arg [arg ...] 其中: <1> script:你的lua脚本 <2> numkeys:  key的个数 <3> key:redis中各种数据

Redis进阶应用:Redis+Lua脚本实现复合操作

一.引言 Redis是高性能的key-value数据库,在很大程度克服了memcached这类key/value存储的不足,在部分场景下,是对关系数据库的良好补充.得益于超高性能和丰富的数据结构,Redis已成为当前架构设计中的首选key-value存储系统. 虽然Redis官网上提供了200多个命令,但做程序设计时还是避免不了为了实现一小步业务逻辑而多次调用Redis的情况. 以compare and set场景为例.如果使用Redis原生命令,需要从Redis中获取这个key,然后提取其中的