[REDIS] 레디 스 해시 거기에 MGET 아날로그인가?
REDIS레디 스 해시 거기에 MGET 아날로그인가?
내가 대신 일반 키의 해시를 사용하여 시작할 계획입니다. 하지만 레디 스 위키 해시 키 멀티 GET에 대한 정보를 찾을 수 없습니다. 명령의 종류 레디 스에서 지원됩니까?
감사합니다.
해결법
-
==============================
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.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.아니 MHGETALL하지만 수 루아 그것을 :
아니 MHGETALL하지만 수 루아 그것을 :
local r = {} for _, v in pairs(KEYS) do r[#r+1] = redis.call('HGETALL', v) end return r
-
==============================
4.레디 스는 하나의 명령으로 여러 해시 키의 값을 반환하는 HMGET 명령을 가지고 있습니다.
레디 스는 하나의 명령으로 여러 해시 키의 값을 반환하는 HMGET 명령을 가지고 있습니다.
-
==============================
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로 점수를 사용하여 정렬 된 집합을 사용하는 것이 좋습니다, 모든 점수를 기반으로 명령의 장점을 활용할 수 있습니다.
from https://stackoverflow.com/questions/3329408/is-there-mget-analog-for-redis-hashes by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] AWS에서 채팅을 확장하기위한 아이디어? (0) | 2020.01.02 |
---|---|
[REDIS] 시스템이 초기화 시스템 (PID 1)로 systemd로 부팅되지 않았습니다. 작동 할 수 없습니다 (0) | 2020.01.02 |
[REDIS] 레디 스에서 거래 대 파이프 라이닝 (0) | 2020.01.02 |
[REDIS] 레디 스에서 내가 어떻게 키를 제거하는 방법은 무엇입니까? (0) | 2020.01.02 |
[REDIS] 어떻게 AWS 람다 함수에서 레디 스 인스턴스에 연결해야합니까? (0) | 2020.01.02 |