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

redisdbのすべてのキーと値を反復処理するためのより高速な方法

    まず、最速の方法は、EVAL内でこれらすべてを実行することです。

    次に、すべてのキーを反復するための推奨されるアプローチはSCANです。 KEYSよりも速く繰り返されることはありません 、ただし、Redisがその間に他のアクションを処理できるようにするため、アプリケーション全体の動作に役立ちます。

    スクリプトは、local data={} local i=1 local mykeys=redis.call(\"KEYS\",\"*\") for k=1,#mykeys do local tmpkey=mykeys[k] data[i]={tmpkey,redis.call(\"GET\",tmpkey)} i=i+1 end return data 、ただし、GETでアクセスできないキー(セット、リストなど)がある場合は失敗します。エラー処理を追加する必要があります。並べ替えが必要な場合は、LUAで直接行うことも、後でクライアント側で行うこともできます。 2つ目は遅くなりますが、redisインスタンスの他のユーザーを待たせることはありません。

    サンプル出力:

    127.0.0.1:6370> eval "local data={} local i=1 local mykeys=redis.call(\"KEYS\",\"*\") for k=1,#mykeys do local tmpkey=mykeys[k] data[i]={tmpkey,redis.call(\"GET\",tmpkey)} i=i+1 end return data" 0
    1) 1) "a"
       2) "aval"
    2) 1) "b"
       2) "bval"
    3) 1) "c"
       2) "cval"
    4) 1) "d"
       2) "dval"
    5) 1) "e"
       2) "eval"
    6) 1) "f"
       2) "fval"
    7) 1) "g"
       2) "gval"
    8) 1) "h"
       2) "hval"
    


    1. プログラムでMongoDbコンバーターを設定する

    2. MongoDB $ mergeObjects

    3. $andとMultiple$orを使用してMongoDBをクエリします

    4. ClusterControlEnterpriseEditionへのアップグレード