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

Trovare valori utilizzando il nome chiave parziale in un set ordinato Redis

Ecco una risposta aggiornata per il 2015.

Se puoi aggiornare Redis sopra 2.8, il comando SCAN con MATCH funzionerà per questo. Prima di quella versione, non tanto, e NON utilizzare il comando KEYS se non in un ambiente di sviluppo.

http://redis.io/commands/scan

Esempio sulla riga di comando:

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

Esempio in 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";
}

Nota, il codice php non è testato e dalla documentazione di base, ad esempio qui. Il codice di produzione dovrebbe essere modificato a seconda delle chiavi necessarie per cercare.

Per quelli su Ubuntu ecco le istruzioni per aggiornare php5-redis:

  1. Scarica il pacchetto 2.2.7 qui:http://pecl.php.net/package/redis
  2. $ php -i | grep Redis Redis Support => enabled Redis Version => 2.2.4
  3. Segui le istruzioni in README per phpizzare, configurare, eseguire l'installazione
  4. Crea un collegamento simbolico per il pacchetto cli della riga di comando:cd /etc/php5/cli/conf.d && sudo ln -s ../../mods-available/redis.ini 20-redis.ini
  5. $ php -i | grep Redis Redis Support => enabled Redis Version => 2.2.7