Maison > base de données > Redis > le corps du texte

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

藏色散人
Libérer: 2020-01-28 14:06:32
avant
3758 Les gens l'ont consulté

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;
Copier après la connexion

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;
Copier après la connexion

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!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!