使用stackexchange.redis存储Lua脚本

使用stackexchange.redis存储Lua脚本,lua,stackexchange.redis,azure-redis-cache,Lua,Stackexchange.redis,Azure Redis Cache,我正在尝试使用Azure WebApp上的StackExchange.Redis,需要运行一些Lua脚本 推荐的方法是将脚本加载到服务器,但我很难理解正确的模式 我认为应该在WebApp启动时这样做: LuaScript luaScript = LuaScript.Prepare(scriptString); var endpoints = redis.GetEndPoints(); var endpoint = endpoints[0]; IServer server = redis.GetS

我正在尝试使用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);
然后保留加载的luascript供以后使用(与ConnectionMultiplexer一起使用)。 然后,稍后当我要运行Lua脚本时:

IDatabase db = redis.GetDatabase();
db.ScriptEvaluate(loadedScript);
这是正确的方法吗

由于Azure可以有多个Redis节点,我是否应该为每个端点运行luaScript.Load并只保留其中一个供以后使用?i、 e:

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;

到目前为止,你有没有得到任何推荐的解决方案?嘿,这方面有什么更新吗@PankajRawat@aasis21我放弃了RADIS脚本,但我会推荐@ ZIV,你有什么更新吗?因为所有的Lua脚本都在内存中,而不是在节点之间复制,所以我认为加载脚本并称它为Willy nilly是危险的,特别是因为StExchange。ReDIS似乎调用EVALSAY。我会考虑在执行脚本之前加载脚本,以获得最佳解决方案;lua文件的大小应该足够小,可以忽略,除非延迟非常重要。