Redis
 sql >> Base de données >  >> NoSQL >> Redis

Recherche de valeurs à l'aide d'un nom de clé partiel dans un ensemble trié Redis

Voici une réponse mise à jour pour 2015.

Si vous pouvez mettre à niveau Redis au-dessus de 2.8, la commande SCAN avec MATCH fonctionnera pour cela. Avant cette version, pas tellement, et n'utilisez PAS la commande KEYS sauf dans un environnement de développement.

http://redis.io/commands/scan

Exemple en ligne de commande :

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

Exemple en 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";
}

Remarque, le code php n'est pas testé et provient de la documentation de base par exemple ici. Le code de production devrait être modifié en fonction des clés nécessaires pour rechercher.

Pour ceux qui utilisent Ubuntu, voici les instructions pour mettre à jour php5-redis :

  1. Téléchargez le package 2.2.7 ici :http://pecl.php.net/package/redis
  2. $ php -i | grep Redis Redis Support => enabled Redis Version => 2.2.4
  3. Suivez les instructions dans README pour phpize, configure, make install
  4. Créez un lien symbolique pour le package cli de la ligne de commande :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