草庐IT

lua_tonumber

全部标签

redis - 在 lua 脚本中使用扫描命令

我正在尝试使用Hiredis和Redis在我的系统中实现2个行为。1)通过发布事件获取所有具有模式的键,而不是使用SCAN命令时返回的数组。(我的系统只适用于publish事件,即使是get所以需要坚持这种行为)2)删除所有带模式的键阅读手册后,我明白“SCAN”命令是我的friend。我有两种方法,不确定优缺点是什么:1)使用将调用SCAN的Lua脚本,直到我们得到0作为我们的光标,并为找到的每个条目获得publish-event/delete-key。2)使用Lua脚本,但返回游标作为返回码,并使用新游标从hiredis客户端调用LUA脚本,直到它为0。或者其他想法会更好。我的数据

redis - 如何将字节数据转换为 String 或 Lua 中的任何其他类似类型

由于历史原因,我们将字节数据存储在Redis中。有一个字段是数据的版本,我想比较版本的值来决定是否保存即将到来的数据。如何实现? 最佳答案 我解决了这个问题localoriginal='\x00\x00\x01f\xd3d\x80X'localparam='\x00\x00\x01f\xd3d\x80W'localtemp1=''localtemp2=''fori=1,#originaldolocalc=original:sub(i,i)temp1=temp1..string.byte(c)--print(string.byte(c

redis - '(错误)ERR 运行脚本时出错(调用 ...)' 对 LUA 脚本使用 --eval 时

运行此命令时出现错误消息:redis-cli--evalmyscript.luamyzset3"one"错误信息:(error)ERRErrorrunningscript(calltof_9c623c243d74e75a4fe64de7a6826b47f8d7d400):@user_script:1:@user_script:1:Luaredis()commandargumentsmustbestringsorintegersLua脚本:localans=redis.call('ZINCRBY',KEYS[1],ARGV[1],ARGV[2])iftonumber(ans)目标是使用Z

redis - 如何在 redis lua 脚本中运行 redis monitor 命令而不是 redis-cli monitor

我想用redislua来实现monitor命令,而不是redis-climonitor。但我不知道怎么办。redis.call('monitor')不起作用。 最佳答案 您不能从RedisLua脚本调用MONITOR-MONITOR是一个阻塞命令,因此如果允许调用它会永远阻塞您的脚本。 关于redis-如何在redislua脚本中运行redismonitor命令而不是redis-climonitor,我们在StackOverflow上找到一个类似的问题: ht

ruby - 你如何查看一个redis存储的lua脚本(用于调试)?

我需要调试的redis脚本(来自ruby​​“Qless”gem)中有一个错误:ruby/gems/1.9.1/gems/redis-3.0.7/lib/redis/client.rb:97:in`call':ERRErrorrunningscript(calltof_f7526d197070c9e82c28fad331b4c020585aad20):user_script:33:badargument#1to'decode'(stringexpected,gotboolean)(Redis::CommandError)如何将f_f7526d197070c9e82c28fad331b4

lua - 在Redis中编写Lua脚本时如何包含第三方库

我正在使用Lua的Redis脚本来做一些与金钱相关的模块(http://redis.io/commands/eval)。不幸的是,RedisLua不支持大十进制类型。我通过互联网搜索并找到了一些支持lua小数点的库,比如lmapm。但不幸的是,我不知道如何安装以在Redis脚本中使用它。对于一般问题,我如何为Redis脚本安装第三方库(如https://github.com/amakawa/ohm.lua),因为Redis脚本似乎不理解Lua的一些基本功能,如“模块”,并且有一些限制,如没有全局变量和函数...请帮我解决这个问题。我四处搜索了几天,但找不到任何解决方案。非常感谢,非常感

javascript - 如何在 Node.js 中使用 Lua 脚本将多条记录插入 Redis 哈希

如何在Node.js中使用Lua脚本向RedisHash中插入多条记录我有以下使用multi,exec插入的代码。如何使用lua脚本更改它returnnewPromise(function(resolve,reject){//resultsvariablecontainsdatafetchedfromMySQLdbresults.forEach(function(item){redisClient.hmset('sections:'+item.section_id,item);});redisClient.exec(function(err,replies){if(err){conso

lua - 在 EVALSHA 中生成新 key

Documentation声明key必须显式传递,因此如果使用Redis集群,命令可以转发到适当的节点。但是,这是否也适用于新key?例如,如果我有一个脚本来注册一个新实体,并且这样的脚本正在动态创建一个由INCR的结果和文字组成的全新key,这对Redis集群来说会是一个问题吗?另一种方法是在单独的操作中调用INCR,并将key作为KEY[1]传递给脚本。 最佳答案 如果您仔细确保您的新key与其他key散列到同一台服务器,我认为您会没事的。也就是说,Cluster的重要之处不仅仅是预先声明您的key,而是要确保您的脚本操作的所有

lua - 如何在脚本加载到 redis 实例后读回脚本?

假设我已经将脚本加载到redis中,我可以稍后再次读取脚本来排除故障吗?例如,我可以读回“return100”吗scriptload"return100"evalsha22cd37f569ce84333afb93ba232d04d5aa6bb87a1keyval 最佳答案 你不能不读一遍剧本。它必须由您的应用程序创建和存储。Redis只是把它放在缓存中。如果你想调试你的脚本,你可以使用scriptdebugcommand. 关于lua-如何在脚本加载到redis实例后读回脚本?,我们在S

lua - Redis 链式命令

我想知道将一系列命令链接在一起以便它们在返回最终结果之前都在Redis上执行的最佳方法是什么?我所有的数据都存储在集合中。data1=[a,b,c,d,e]data2=[b,c]我将如何获取data1和data2的交集(result=b,c),然后对结果调用SRANDMEMBER?在一个系列中它看起来像:redis>SINTERdata1data2redis>SRANDMEMBER当然可以将其他操作链接在一起,例如SDIFF和SADD,但从交叉点中选择随机项目似乎是最简单的示例。我尝试创建一个lua脚本,但当我尝试执行以下代码时收到消息“Luaredis()命令参数必须是字符串或整数”