13

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;
4

1 に答える 1