Nous savons tous que lorsque vous recherchez des clés Redis, vous pouvez utiliser un modèle de clés, mais lorsqu'il y a trop de clés, l'efficacité de la commande key est très faible si elle est utilisée directement en ligne. , cela peut même causer des problèmes de production. Accident, à ce moment-là, autant utiliser la commande scan. La commande
SCAN est un itérateur basé sur un curseur (cursor based iterator
) : chaque fois que la commande
SCAN est appelée, un nouveau curseur sera renvoyé à l'utilisateur, dont l'utilisateur a besoin dans l'itération suivante Utilisez ce nouveau curseur comme paramètre de curseur de la commande SCAN pour continuer l'itération précédente.
Lorsque le paramètre curseur de la commande SCAN est défini sur 0, le serveur démarrera une nouvelle itération, et lorsque le serveur renvoie un curseur avec une valeur de 0 à l'utilisateur, cela signifie que l'itération est terminée .
Générer la clé
<?php // 生成1000个 $redis = new \Redis(); $redis->connect('127.0.0.1', 6379, 10); $redis->select(2); $arr = [ 'rwer', '24erw', 'rterq4', 'sdgfd5', 'dgsdg', 'sfst', ]; for ($i=0; $i<1000; $i++) { $redis->set(md5($i.$arr[$i%6]), md5($arr[$i%6].'sdfsd')); } echo "OK".PHP_EOL;
clés Afficher le numéro
keys c*
Utiliser l'analyse pour remplacer les clés dans Redis
scan traverse
<?php $redis = new \Redis(); $redis->connect('127.0.0.1', 6379, 10); $redis->select(2); $iterator = null; // 遍历前缀 $pattern = 'c*'; $count = 100; // 务必设置,如果没扫描到,继续扫描,而不是返回空,否则while直接退出,遍历就会不准确 $redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY); $total = []; $i = 0; // $count可以不设置,非必需参数 while($arr = $redis->scan($iterator, $pattern, $count)) { $arrVal = $redis->mget($arr); $ret = array_combine($arr, $arrVal); $total = array_merge($total, $ret); $i++; } // var_dump($total); var_dump($i); echo count($total).PHP_EOL;
Utiliser l'analyse pour remplacer les clés dans Redis
Bien sûr, vous pouvez également boucler sans utiliser les deux paramètres Redis::OPT_SCAN
et Redis::SCAN_RETRY
pour déterminer si la valeur de retour est fausse, et le parcours peut également être réussi.
Pour plus de connaissances sur Redis, veuillez faire attention à la colonne Tutoriel de base de données Redis.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!