gpt4 book ai didi

lua - 使用 stackexchange.redis 存储 Lua 脚本

转载 作者:行者123 更新时间:2023-12-04 04:25:14 29 4
gpt4 key购买 nike

我正在尝试在 Azure WebApp 上使用 StackExchange.Redis 并且需要运行一些 Lua 脚本。

推荐的方法是将脚本加载到服务器,但我很难理解正确的模式。

我认为应该完成的方式是在 WebApp 启动时:

LuaScript luaScript = LuaScript.Prepare(scriptString);
var endpoints = redis.GetEndPoints();
var endpoint = endpoints[0];
IServer server = redis.GetServer(endpoint);
LoadedLuaScript loadedScript = luaScript.Load(server);

然后保留 LoadedLuaScript 以备后用(与 ConnectionMultiplexer 一起使用)。
然后当我想运行 Lua 脚本时:
IDatabase db = redis.GetDatabase();
db.ScriptEvaluate(loadedScript);

这是正确的方法吗?

由于 Azure 可以有多个 Redis 节点,我是否应该为每个端点运行 luaScript.Load 并只保留其中一个以备后用?即:
LuaScript luaScript = LuaScript.Prepare(script);
var endpoints = redis.GetEndPoints();
LoadedLuaScript loadedScript;
foreach (var endpoint in endpoints)
{
IServer server = redis.GetServer(endpoint);
loadedScript = luaScript.Load(server);
}
return loadedScript;

最佳答案

documentation .使用 StackExchange.Redis,您不必手动将 Lua 脚本加载到 redis。而且您不必使用 LoadedLuaScript。
即使您有多个 Redis 节点,LuaScript 类也会自动处理脚本的传输。它试图通过它的散列调用脚本,如果脚本丢失,它会收到一个 NOSCRIPT 错误,然后传输脚本。
正确的方法是简单地调用

LuaScript.Prepare(script).Evaluate(myDb)
参见 https://github.com/StackExchange/StackExchange.Redis/blob/main/src/StackExchange.Redis/RedisDatabase.cs 中的 ScriptEvalMessage:GetMessages

关于lua - 使用 stackexchange.redis 存储 Lua 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31531637/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com