sql >> Database teknologi >  >> NoSQL >> Redis

Find værdier ved at bruge delvist nøglenavn i et Redis Sorteret sæt

Her er et opdateret svar for 2015.

Hvis du kan opgradere Redis til over 2.8, vil SCAN-kommandoen med MATCH fungere til dette. Før den version, ikke så meget, og brug IKKE kommandoen KEYS undtagen i et udviklingsmiljø.

http://redis.io/commands/scan

Eksempel på kommandolinje:

$ 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"

Eksempel i 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";
}

Bemærk, php-koden er ikke testet og fra kernedokumentationen for eksempel her. Produktionskoden skal ændres afhængigt af de nødvendige nøgler for at slå op.

For dem på Ubuntu er her instruktionerne til at opgradere php5-redis:

  1. Download 2.2.7-pakken her:http://pecl.php.net/package/redis
  2. $ php -i | grep RedisRedis Support => aktiveretRedis Version => 2.2.4
  3. Følg instruktionerne i README for at phpize, konfigurere, installere
  4. Opret et symbollink til kommandolinje-cli-pakken:cd /etc/php5/cli/conf.d &&sudo ln -s ../../mods-available/redis.ini 20-redis.ini
  5. $ php -i | grep RedisRedis Support => aktiveretRedis Version => 2.2.7


  1. Hvordan udfylder man indlejrede enheder i mongoose?

  2. Redis C# - Brug af Incr-værdi i en transaktion

  3. MongoDB:Beregn dvæletid mellem hver statusværdiændring

  4. Rette "$pullAll kræver et array-argument, men fik en dobbelt" i MongoDB