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 を実行し、後で使用できるようにそのうちの 1 つだけを保持する必要がありますか? すなわち:
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;