복붙노트

[REDIS] 레디 스 해시 거기에 MGET 아날로그인가?

REDIS

레디 스 해시 거기에 MGET 아날로그인가?

내가 대신 일반 키의 해시를 사용하여 시작할 계획입니다. 하지만 레디 스 위키 해시 키 멀티 GET에 대한 정보를 찾을 수 없습니다. 명령의 종류 레디 스에서 지원됩니까?

감사합니다.

해결법

  1. ==============================

    1.당신은 당신의 레디 스 인스턴스에 하나 개의 요청에 즉, 파이프 라인에 해시 또는 키를 조회 할 수 있습니다. 실제 구현은 클라이언트에 따라 다르지만 레디 스 - 평으로는 다음과 같이 것입니다 :

    당신은 당신의 레디 스 인스턴스에 하나 개의 요청에 즉, 파이프 라인에 해시 또는 키를 조회 할 수 있습니다. 실제 구현은 클라이언트에 따라 다르지만 레디 스 - 평으로는 다음과 같이 것입니다 :

    pipe = conn.pipeline()
    pipe.hgetall('foo')
    pipe.hgetall('bar')
    pipe.hgetall('zar')
    hash1, hash2, hash3 = pipe.execute()
    

    클라이언트는 3 개 명령을 하나 개의 요청을 발행합니다. 이것은 한 번 세트에 여러 값을 추가하는 데 사용되는 동일한 기술이다.

    http://redis.io/topics/pipelining에서 더 읽기

  2. ==============================

    2.SORT 여러 사용하게하는 경우에 GET을 -> 구문 및 모든 해시는 세트에 자신의 이름을 넣어 그 정렬하여 대량 답장을 얻을 수있는, 같은 필드를했다.

    SORT 여러 사용하게하는 경우에 GET을 -> 구문 및 모든 해시는 세트에 자신의 이름을 넣어 그 정렬하여 대량 답장을 얻을 수있는, 같은 필드를했다.

      SORT names_of_hashes GET *->field1 *->field2 *->field3 *->etc
    

    당신이 해시 접근 그렇게 할 수처럼 그러나 그것은 보이지 않는다. 게다가 당신은 해시 자신에 반환 목록 등을 설정해야 할 것입니다.

    UPDATE : 레디 스 당신은 잘 당신의 해시 이름을 경우 여러 필드를 가져올 수 있도록 같다 :

    redis> hset hash:1 name fish
    (integer) 1
    redis> hset hash:2 name donkey
    (integer) 1
    redis> hset hash:3 name horse
    (integer) 1
    redis> hset hash:1 type fish
    (integer) 1
    redis> hset hash:2 type mammal
    (integer) 1
    redis> hset hash:3 type mammal
    (integer) 1
    redis> sadd animals 1
    (integer) 1
    redis> sadd animals 2
    (integer) 1
    redis> sadd animals 3
    (integer) 1
    redis> sort animals get # get hash:*->name get hash:*->type
    1. "1"
    2. "fish"
    3. "fish"
    4. "2"
    5. "donkey"
    6. "mammal"
    7. "3"
    8. "horse"
    9. "mammal"
    
  3. ==============================

    3.아니 MHGETALL하지만 수 루아 그것을 :

    아니 MHGETALL하지만 수 루아 그것을 :

    local r = {}
    for _, v in pairs(KEYS) do
      r[#r+1] = redis.call('HGETALL', v)
    end
    
    return r
    
  4. ==============================

    4.레디 스는 하나의 명령으로 여러 해시 키의 값을 반환하는 HMGET 명령을 가지고 있습니다.

    레디 스는 하나의 명령으로 여러 해시 키의 값을 반환하는 HMGET 명령을 가지고 있습니다.

  5. ==============================

    5.하나의 샷을 할 수있는 명령은 없습니다,하지만 당신은 당신에게 HASHKEYS를 저장 한 다음 멀티를 사용하여 일괄로를 검색 할 목록 (또는 소트 세트)를 사용하여, "잘"그것을 할 수있는 방법이있다.

    하나의 샷을 할 수있는 명령은 없습니다,하지만 당신은 당신에게 HASHKEYS를 저장 한 다음 멀티를 사용하여 일괄로를 검색 할 목록 (또는 소트 세트)를 사용하여, "잘"그것을 할 수있는 방법이있다.

    PHP에서 :

    $redis->zAdd("myHashzSet", 1, "myHashKey:1");
    $redis->zAdd("myHashzSet", 2, "myHashKey:2");
    $redis->zAdd("myHashzSet", 3, "myHashKey:3");
    
    $members = $redis->zRange("myHashzSet", 0, -1);
    $redis->multi();
    foreach($members as $hashKey) {
        $redis->hGetAll($hashKey);
    }
    $results = $redis->exec();
    

    나는 당신이 당신의 해시에 대한 ID로 점수를 사용하여 정렬 된 집합을 사용하는 것이 좋습니다, 모든 점수를 기반으로 명령의 장점을 활용할 수 있습니다.

  6. from https://stackoverflow.com/questions/3329408/is-there-mget-analog-for-redis-hashes by cc-by-sa and MIT license