sql >> データベース >  >> NoSQL >> Redis

redisの再起動後にredisでluaスクリプトを実行できないのはなぜですか?

    サーバー側のLuaスクリプトは、Redisによって保存または保存されません。これらは、RDBMSにあるストアドプロシージャとは異なります。

    クライアントは、少なくともスクリプトの最初の実行のためにスクリプトのテキストを提供することになっています(つまり、最初の実行にはEVALを使用し、次の呼び出しにはEVALSHAを使用します)。または、SCRIPTLOADとSCRIPTEXISTSを使用することもできます。状況によっては、より便利な場合があります。

    これは、アプリケーションで処理するのが少し複雑ですが、利点があります。それは、Luaスクリプトに関してRedisサーバーをステートレスにします。アプリケーションのコード(Luaスクリプトを含む)は、アプリケーション側で管理されます。新しいバージョンのアプリケーションをロードする前に、Redisサーバーに何かを適用する必要はありません(Luaスクリプトが変更されている場合でも)。

    このプロパティは、分散インフラストラクチャのコンテキストで非常に役立ち、オンザフライのアプリケーションロード、クライアント側のシャーディング、またはRedisクラスターをサポートします。




    1. Model.find()はマングースで空を返します

    2. MongoDB $ exp

    3. StackExchange.Redisで非同期コマンドとTask.WhenAnyが待機した後のタイムアウト例外

    4. $unsetは空です。次のようにフィールドを指定する必要があります:{$ unset:{<field>:...}}