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

RedisSCANマッチング

    Redisスキャン一致はglobスタイルの一致のみをサポートします。正規表現のマッチングはできません。目標を達成するには、次の2つのオプションがあります。

    1. すべてのキーをスキャンし、クライアント側で照合を行います。
    2. Luaスクリプトを使用してスキャンとマッチングを行います。例として、次のワンライナーを試すことができます。
    redis-cli eval 'local res = redis.call("scan", ARGV[1]); local matches = {}; for i,v in ipairs(res[2]) do if v == string.match(v, ARGV[2]) then matches[#matches+1] = v end end res[2] = matches; return res' 0 cursor-starting-from-0 'Person:[^:]*'
    

    このワンライナーは、組み込みのスキャンコマンドとまったく同じ結果を返します。私はLuaの専門家ではなく、コードは完全にはテストされていません。

    また、Luaのマッチングは正規表現のマッチングではありませんが、ほとんどの問題を解決できます。 Luaの参照を使用して、ケースと一致するかどうかを確認する必要があります。




    1. mongodb:aggregateコマンドの実行時間を確認するにはどうすればよいですか?

    2. nodejsとredis(node_redis)を使用したパブリッシュサブスクライブ

    3. MongoDB $ last Aggregation Pipeline Operator

    4. MongoDBインスタンスへのデータのインポート