[REDIS] 레디 스 소트 세트의 부분 키 이름을 사용하여 값을 찾기
REDIS레디 스 소트 세트의 부분 키 이름을 사용하여 값을 찾기
나는 다음 키 이름과 값이 정렬 된 세트를 가지고 :
zrange bargraph:branch:1:category:2:product:4
1) "76"
2) "55"
3) "10"
4) "84"
나는 와일드 카드 문자를 사용할 수 있습니다 레디 스의 메커니즘이 (어쩌면?) 여전히 같은 값을 얻을 수 zrange를 사용하는 경우? 즉, 수행은 지원 zrange 막대 그래프를 레디 스 : 지점 : 1 : 카테고리 : 2? 그렇지 않으면 난 단지 다른 소트 세트를 사용하지 않고 카테고리 ID (2)이 아닌 제품 ID (4)를 알고있는 경우, 최선의 방법 나는 모든 값을받을 수 있나요?
해결법
-
==============================
1.당신이 언급했듯이 키는 키 엔진 수행하기 때문에 선형 스캔 비효율적이다. 불행하게도, 당신이 찾고있는대로 더 와일드 카드 솔루션 등이있다
당신이 언급했듯이 키는 키 엔진 수행하기 때문에 선형 스캔 비효율적이다. 불행하게도, 당신이 찾고있는대로 더 와일드 카드 솔루션 등이있다
카테고리 별 제품 키에 대한 SET를 사용하는 것이 좋습니다 :
SADD 막대 그래프 : 분기 : 1 : 장르 : 2 1 2 3 4
카테고리 구성원이 할 모든 설정을 가져올 수 :
SMEMBERS 막대 그래프 : 지점 : 1 : 카테고리 : 2
당신이 당신의 점수를 합산 신경, 또는 소트 세트마다 다른 항목이없는 경우, 당신은 당신의 당 제품의 조합이 같은 세트를 분류 할 수있다 :
ZUNIONSTORE 막대 그래프 : 분기 : 1 : 장르 : 2 : 제품 : 4 막대 그래프 : 분기 : 1 : 장르 : 2 : 제품 1 막대 그래프 : 분기 : 1 : 장르 : 2 : 제품 2 막대 그래프 : 분기 : 1 : 장르 : 2 : 제품 3 막대 그래프 : 지점 : 1 : 카테고리 : 2 : product4입니다
지점 : 지금 당신은 막대 그래프를 zrange 수 1 : 범주 : 2 : 제품을 모든
성능 향상을 위해 당신 파이프 라인 위의 작업
-
==============================
2.여기에 2015 년 업데이트 된 대답은.
여기에 2015 년 업데이트 된 대답은.
당신이 2.8 이상 레디 스를 업그레이드 할 수있는 경우, MATCH와 SCAN 명령이 작동합니다. 해당 버전 전에 그다지 및 개발 환경에서 제외 KEYS 명령을 사용하지 마십시오.
http://redis.io/commands/scan
명령 줄에서 예 :
$ redis-cli 127.0.0.1:6379> scan 0 match V3.0:* 1) "0" 2) 1) "V3.0:UNITTEST55660BC7E0C5B" 2) "V3.0:shop.domain.com:route" 3) "V3.0:UNITTEST55660BC4A2548" 127.0.0.1:6379> scan 0 match V1.0:* 1) "0" 2) (empty list or set) 127.0.0.1:6379> scan 0 match V3.0:* 1) "0" 2) 1) "V3.0:UNITTEST55660BC7E0C5B" 2) "V3.0:shop.domain.com:route" 3) "V3.0:UNITTEST55660BC4A2548"
PHP의 예 :
// Initialize our iterator to NULL $iterate = null; // retry when we get no keys back $redis->setOption(Redis::OPT_SCAN, Redis::SCAN_RETRY); while ($arr_keys = $redis->scan($iterate, 'match:*')) { foreach ($arr_keys as $str_key) { echo "Here is a key: $str_key\n"; } echo "No more keys to scan!\n"; }
참고 PHP 코드는 테스트 여기 예를 들어, 핵심 설명서에서되지 않습니다. 생산 코드를 찾기 위해 필요한 키에 따라 수정 될 필요가있을 것이다.
우분투 사람들을 위해 여기 PHP5 - 레디 스를 업그레이드 할 수있는 방법은 다음과 같습니다
from https://stackoverflow.com/questions/15673054/finding-values-by-using-partial-key-name-in-a-redis-sorted-set by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 클라이언트가 즉석에서 생성되는 매우 큰 파일을 다운로드하게하는 방법 (0) | 2020.01.15 |
---|---|
[REDIS] 캐싱 JSON은 서버 측에서 객체 (0) | 2020.01.15 |
[REDIS] 푸른 레디 스 캐시의 최대 연결에 도달 (0) | 2020.01.15 |
[REDIS] StackExchange.Redis와 병렬 실행? (0) | 2020.01.15 |
[REDIS] 어떻게 ServiceStack PooledRedisClientManager 장애 조치 작동합니까? (0) | 2020.01.15 |