Maison > Article > base de données > Comment supprimer des clés par lots dans php redis
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.
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; }
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!