복붙노트

[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. ==============================

    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. ==============================

    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 - 레디 스를 업그레이드 할 수있는 방법은 다음과 같습니다

  3. 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