草庐IT

json - 在redis中设置lua表

我有一个lua脚本,简化后是这样的:localitem={};localid=redis.call("INCR","counter");item["id"]=id;item["data"]=KEYS[1]redis.call("SET","item:"..id,cjson.encode(item));returncjson.encode(item);KEYS[1]是一个字符串化的json对象:JSON.stringify({name:'somename'});发生的事情是,因为我正在使用cjson.encode将项目添加到集合中,所以它似乎被字符串化了两次,所以结果是:{"id":20

Redis Lua 脚本每周都会被删除

我已经使用SCRIPTLOAD命令将Lua脚本加载到Redis中,并使用EVALSHA执行它。然而,脚本在1周后被删除。除了SCRIPTFLUSH之外还有其他方法可以删除脚本吗?重新启动之间的脚本持久性吗? 最佳答案 除了SCRIPTFLUSH之外,还有其他方法可以删除脚本吗?目前,答案是否。脚本是否在重启之间保持不变?No:Also,asalreadymentioned,restartingaRedisinstanceflushesthescriptcache,whichisnotpersistent.Howeverfromthe

Redis Cluster - transaction vs LUA 脚本,哪一个会产生更好的性能?

如果我可以在Redis集群中使用事务和LUA脚本(不是缓存脚本)获得相同的结果,哪个具有更好的性能?每次执行LUA脚本都必须编译,对吧?那么对性能有影响吗?我找不到任何方法在Redis集群的服务器上缓存脚本,并且只为该脚本接收一个sha1并根据交易文件:"wemaydeprecateandfinallyremovetransactions"Transaction会被LUA脚本取代有什么原因抱歉,如果我有任何错误! 最佳答案 StackExchange.Redis在幕后自动使用准备好的脚本(SCRIPTLOAD、EVALSHA等),因

nginx - lua redis 字符串比较不起作用

localpassword=json_string["password"]or"None"localredisPassword=red:hmget(userName,"password")orNonelocalredisAuthtoken=red:hmget(userName,"authToken")if(tostring(password)==tostring(redisPassword))thenngx.say(redisAuthtoken)elsengx.say("ErrorUserorServiceNotfound1510")end密码=管理员redis密码=admin我能够看

lua - 在lua脚本中按降序获取 key 列表

我在rediskeystore中有一个列表。它像这样包含日期作为键名。key===20160429201604302016050120160502现在我想键入最后2个键,为此我在我的lua脚本中执行以下操作。localdata={};localkeyslist=redis.call('keys','stats:day:*');localkey,users,redisData;--keyslist=#keyslist.sort(#keyslist,function(a,b)returna[2]>b[2]end);--keyslist=#keyslist.sort(#keyslist,fu

nginx - 带有 nginx 的 lua 脚本中的持久性 redis 句柄

我正在使用lua脚本将参数从nginxhttp服务器推送到redishttps://github.com/openresty/lua-resty-redis我不想每次都与redis服务器建立新连接。我可以坚持redis连接吗?还有一个选项可以使这个异步 最佳答案 如果您使用set_keepalive指定连接池大小(第二个参数),当你connect,lua-resty-redis库将自动尝试解析之前的空闲连接(如果有的话)。它还允许为您的池指定自定义名称。所有内容均在'redis#connect'methoddocumentation

node.js - 从另一个 lua 脚本加载 lua 脚本

我已经为我的node.js项目编写了一些lua脚本。但是我的一些lua脚本中有相同的代码。让我先解释一下。我的第一个脚本从redis返回给定键的所有数据。script1.lualocaldata={};localkeyslist=redis.call('keys','day:*');localkey,redisData;foriCtr=1,#keyslistdokey=string.gsub(keyslist[iCtr],'day:','');redisData=redis.call('hmget',keyslist[iCtr],'users');table.insert(data,{

c# - 如何在将加载到 Redis 的 LUA 脚本上重用代码?

目前我制作了一些加载到Redis以执行一些命令的LUA脚本。有些功能对所有脚本都是通用的,比如解析内容或数据转换,我一直在脚本之间进行复制/粘贴,而不是简单地重用它们。无法发出“要求”,因为Redis将无法知道在哪里加载文件。对于我添加的每一个脚本,维护噩梦都会变得更大!如何将DRY原则应用于这种情况?我想到的唯一方法是T4代码生成器。我可以用这段代码制作一个“lua”文件:#import"DataTransformer.lua"T4将尝试读取每个扩展名为.lua的文件并查找标签#import。对于每个#import标签都会找到相应的文件并用实际代码替换该行。这样T4会自动复制/粘贴。

json - 如何检查 Redis 的 Lua cjson 中的 nil/null?

我有一个代码块如下的lua脚本:localcall_data=cjson.decode(ARGV[1])localother_data=cjson.decode(ARGV[2])localdata={}localnext=nextlocalpopulate_data=function(source)ifnext(source)==nilthenreturnendforproperty,valueinpairs(source)doredis.call('HSET',KEYS[2],property,value)endendpopulate_data(call_data)populate_

redis - 如何在脚本中对 lua 表结果进行 zscan

我正在编写一个在Redis中执行的Lua脚本。我正在使用如下所示的排序集:成员(member):96954_1_1557705600分数:1557705600分数是一个unix纪元时间戳。我想首先获得两个时间戳之间的结果,然后根据成员中的glob模式过滤那些结果。类似于MATCH*_1_*。我的脚本看起来像这样,但是当我尝试将Lua表传递给zscan时它失败了:本地开始日期=KEYS[1]本地结束日期=KEYS[2]locallimited_by_date=redis.call('zrangebyscore','rooms',start_date,end_date)returnredi