Maison > base de données > Redis > Comment supprimer des clés par lots dans php redis

Comment supprimer des clés par lots dans php redis

藏色散人
Libérer: 2020-08-15 11:49:46
original
5592 Les gens l'ont consulté

Comment supprimer des clés dans PHP redis : utilisez d'abord la commande scan pour parcourir de manière incrémentielle les clés préfixées par [XX], puis supprimez la clé spécifiée via la fonction de dissociation.

Comment supprimer des clés par lots dans php redis

Recommandé : "tutoriel redis"

clé de suppression par lots php redis

Résumé

Utilisez la commande scan pour parcourir progressivement les clés préfixées par XX, puis supprimez

Introduction

Dans le développement réel, si vous ne faites pas attentionredis mélangera des données inutiles. Par exemple, un grand frère oublie d'ajouter du temps de cache ou doit ajouter du temps de cache en raison. aux modifications commerciales. La liste des structures de données est remplacée par zset, et le cache précédent est inutile, mais le délai d'expiration est un peu long. À ce stade, les clés doivent être supprimées par lots. Si vous utilisez la commande keys pour parcourir les clés qui remplissent les conditions, cela bloquera d'autres opérations de redis, ce qui n'est certainement pas possible dans un environnement de production, la commande scan est donc utilisée comme un tueur.

Code

/**
  在redis集群中,scan命令需要指定节点。还需要注意,要连接主节点。
**/
$redis = new \Redis();
$timeout = 2.5;
$ip = '127.0.0.1';
$redisConfArr = [
    [$ip, 8001],
    [$ip, 8002],
    [$ip, 8003]
];
foreach ($redisConfArr as $redisConf) {
    $redis->pconnect($redisConf[0], $redisConf[1], $timeout);
    //默认SCAN_NORETRY情况下有可能会返回空数组,设置成SCAN_RETRY,如果是空数组的话,将不返回继续扫描下去
    $redis->setOption(\Redis::OPT_SCAN, \Redis::SCAN_RETRY);
    $it = NULL;
    while ($arr_keys = $redis->scan($it, CacheKeyConfig::CachePre.'*')) {
        if (is_array($arr_keys)) {
            //推荐使用unlink函数,非阻塞删除,删除大key时很好用,但是它需要redis版本>=4.0
            $result = $redis->del($arr_keys);
                echo $result . PHP_EOL;
        }
    }
    echo "OK!" . PHP_EOL;
}
Copier après la connexion

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:php.cn
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