Maison  >  Article  >  base de données  >  Comment utiliser l'analyse pour remplacer les clés dans Redis

Comment utiliser l'analyse pour remplacer les clés dans Redis

藏色散人
藏色散人avant
2020-01-28 14:06:323638parcourir

Comment utiliser l'analyse pour remplacer les clés dans Redis

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(&#39;127.0.0.1&#39;, 6379, 10);
$redis->select(2);
$arr = [
    &#39;rwer&#39;,
    &#39;24erw&#39;,
    &#39;rterq4&#39;,
    &#39;sdgfd5&#39;,
    &#39;dgsdg&#39;,
    &#39;sfst&#39;,
];
for ($i=0; $i<1000; $i++) {
    $redis->set(md5($i.$arr[$i%6]), md5($arr[$i%6].&#39;sdfsd&#39;));
}
echo "OK".PHP_EOL;

clés Afficher le numéro

keys c*

Comment utiliser lanalyse pour remplacer les clés dans Redis

Utiliser l'analyse pour remplacer les clés dans Redis

scan traverse

<?php
$redis = new \Redis();
$redis->connect(&#39;127.0.0.1&#39;, 6379, 10);
$redis->select(2);
$iterator = null;
// 遍历前缀
$pattern = &#39;c*&#39;;
$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

Comment utiliser lanalyse 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer