草庐IT

lua-cjson

全部标签

redis - 如何每天在lua中过期一组redis?

我正在禁止蜘蛛在openresty(1.13.6.2)中使用lua脚本。它将探测非法ip并添加到黑名单。res,err=cache:sadd('black-list',ngx.var.remote_addr)现在我想让黑名单每天12:00过期(解除封禁ip)。如何过期设置每日?正确的做法是什么?这是禁止禁止的代码:is_black,err=cache:sismember('black_list',ngx.var.remote_addr)ifis_black==1thenngx.exit(ngx.HTTP_FORBIDDEN)gotolabelend 最佳答案

node.js - 可以使用 Lua 脚本让 Redis 抛出事件吗?

我正在尝试创建一个抽象,我可以在其中监听redis集合的更改事件并将键和值传递到回调中。我想知道是否可以在较新版本上使用Lua脚本来做到这一点。谢谢! 最佳答案 您当然可以从Lua脚本发布事件,并且您当然可以轮询。解决问题的正确方法是每次更改集时都发布到pubsubchannel。 关于node.js-可以使用Lua脚本让Redis抛出事件吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques

lua - lua-redis脚本出错

我正在尝试在redis中运行以下lua脚本:forj=0,5000dolocali=redis.pcall('incr','SS:'..ARGV[2])%5000ifredis.pcall('sismember','S:',i)==0thenifi>4999thenredis.pcall('set',"SS:"..ARGV[2],1)i=1endendifredis.pcall('get','SS:'..ARGV[2])>4thenreturn'forbiden'endredis.pcall('incr','C:'..ARGV[1])redis.pcall('sadd','US:'..

lua - 如何在lua脚本中找到特定的redis键内存大小

redis.call('select','14')localallKeys=redis.call('keys','orgId#1:logs:email:uid#*')fori=1,#allKeys,1dolocalobject11=redis.call('DEBUGOBJECT',allKeys[i])print("kk",object11[1])end这里“DEBUGOBJECT”在redis-cli上运行成功,但是如果我们想在多个键上运行lua脚本。发送这样的错误。(错误)ERR运行脚本时出错(调用f_b003d960240545d9540ebc2319d8632210453815

lua - 如何使用 Redis lua 脚本调用具有不同参数的不同命令

我有一个场景,在运行redis命令之前需要进行验证。仅当验证通过时才应运行该命令。我正在考虑使用lua脚本来做到这一点。需要与其参数一起运行的命令应指定为lua脚本的参数。这个脚本的逻辑是这样的形式:ifverify(KEYS[1],ARGV[1])thenredis.call(ARGV[2],KEYS[2],redis.call方法中所需的参数数量取决于执行的命令(ARGV[2])。这些参数通过ARGV[3]到ARGV[n]指定给脚本,其中n>=3。我想了解如何将这些参数传递给调用方法。 最佳答案 您需要将剩余的参数复制到另一个表

【Lua】(一)VSCode 搭建 Lua 开发环境

前言最近在找工作,基本所有的岗位都会问到Lua(甚至拼UI的都要求会Lua),咱能怎么办呢,咱也只能学啊……工欲善其事,必先利其器。第一步,先来把环境配置好吧!当前适用版本:LuaBinaries版本:5.4.2VSCode版本:1.77.3文章最近更新日期:2023.04.24一、下载LuaBinariesLua官网:TheProgrammingLanguageLua(本文中用不到)在官网找到LuaBinaries的下载链接:LuaBinaries(sourceforge.net),直接下载最新版本下载完成后解压到对应的文件夹(自定义路径,根据自己习惯来就好)这里我使用的路径是 D:\Lua

redis - Redis集群上的Lua脚本

我有一个Redis集群,我想在目标节点上执行LUA脚本。当我这样做时,我从Redis集群收到一条错误消息,指出键必须在同一个SLOT上,但脚本仅在1个键上执行两个命令。ifredis.call('HEXISTS','TEST',KEYS[1])==1thenredis.call('HSET','TEST',KEYS[1],ARGV[1])return1endreturn0我尝试使用HashTagKey,但它不起作用。 最佳答案 您收到此错误是因为您正在尝试访问名为TEST的Rediskey,但不要通过在EVAL命令中列出它来让Red

redis - 将可变数量的参数传递给 Redis Lua 脚本

我正在使用EVAL将几个参数传递给我的Lua脚本。但是,最后一个参数是可选的,它可以传递也可以不传递给EVAL。如何在RedisLua脚本中检查参数是否存在?例如,ARGV[3]是否存在。 最佳答案 ifARGV[3]then--userpassinARGV[3]else--NoARGV[3]end 关于redis-将可变数量的参数传递给RedisLua脚本,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c

lua 按键访问表元素

我正在使用Lua脚本读取redis存储中哈希键的内容。我的代码如下:localkey=KEYS[1]--Checkiftheuseraccountexistslocalaccnt=redis.call('hgetall',key);ifnext(accnt)==nilthenreturn404endreturnaccnt;当我运行这个程序时,我得到了如下正确的结果。[2016-04-1719:27:07.807][DEBUG]AuthServer-Loadingscript./scripts/debit_script.luatoredis...['id','47','accType',

nginx - lua 找不到模块套接字

我正在尝试使用lua从nginx访问redis值。当我在命令行上执行lua文件时,一切正常,我能够读取和写入redis的值。但是当我尝试通过访问写入access_by_lua指令的位置从nginx执行相同的文件时,错误日志文件中记录了以下错误nofieldpackage.preload['socket']nofile'/home/sivag/redis/redis-lua/src/socket.lua'nofile'src/socket.lua'nofile'/home/sivag/lua/socket.lua'nofile'/opt/openresty/lualib/socket.s