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

RedisでGROUPBYを実行する方法

    あなたはこれを行うことができます

    script.luaという名前のluaスクリプト内

    local hash_val = redis.call('hgetall',KEYS[1])
    local result = {}
    for i = 0 , #hash_val do
        if hash_val[i] == ARGV[1] then
            table.insert(result,hash_val[i-1])
            table.insert(result,hash_val[i])
        end
    end
    return result
    

    luaはシーケンスkey0、val0、key1、val1などでハッシュを取得します...

    そして、あなたがそれをそのように呼ぶことができた後:

    redis-cli  eval "$(cat script.lua)" 1 "my_hash" 1
    

    あなたが持っているでしょう:

    1) "foo"
    2) "1"
    3) "bar"
    4) "1"
    

    eval関数の詳細はこちら

    編集: コメントでdeltheilが述べたように、値のみをチェックし、不必要なチェックを行わないために、ハッシュ要求のレンダリングはkey、values、key、valueなどであるため、forループを2ステップすることができます...:

    >
    local hash_val = redis.call('hgetall',KEYS[1])
    local result = {}
    for i = 2 , #hash_val, 2 do
        if hash_val[i] == ARGV[1] then
            table.insert(result,hash_val[i-1])
            table.insert(result,hash_val[i])
        end
    end
    return result
    



    1. MongoDBは一度に複数のコレクションをクエリします

    2. Flaskユーザー認証

    3. Spark HBaseコネクタ–1年のレビュー

    4. MongoDBドライバー使用時のjava.lang.NoClassDefFoundError