最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

php redis批量删除key的方法

来源:动视网 责编:小采 时间:2020-11-09 06:51:44
文档

php redis批量删除key的方法

php redis批量删除key的方法:php redis删除key的方法:首先使用scan命令增量迭代的方式遍历出以【XX】为前缀的key;然后通过unlink函数删除指定的key即可。推荐:《redis教程》php redis批量删除key摘要使用scan命令增量迭代的方式遍历出以XX为前缀的key,然后删除简介在实际开发中
推荐度:
导读php redis批量删除key的方法:php redis删除key的方法:首先使用scan命令增量迭代的方式遍历出以【XX】为前缀的key;然后通过unlink函数删除指定的key即可。推荐:《redis教程》php redis批量删除key摘要使用scan命令增量迭代的方式遍历出以XX为前缀的key,然后删除简介在实际开发中


推荐:《redis教程》

php redis批量删除key

摘要

使用scan命令增量迭代的方式遍历出以XX为前缀的key,然后删除

简介

在实际开发中,一不小心redis就会混入一些无用的数据,比如某位大哥忘记给加上缓存时间,或者因为业务修改需要将数据结构list改为zset,之前的缓存就没用了,但是过期时间有点长,这时候就需要批量删除key。如果使用keys命令遍历出符合条件的keys,会阻塞redis的其他操作,在生产环境是肯定不行的,于是祭出scan命令大杀器。

代码

/**
 在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;
}

文档

php redis批量删除key的方法

php redis批量删除key的方法:php redis删除key的方法:首先使用scan命令增量迭代的方式遍历出以【XX】为前缀的key;然后通过unlink函数删除指定的key即可。推荐:《redis教程》php redis批量删除key摘要使用scan命令增量迭代的方式遍历出以XX为前缀的key,然后删除简介在实际开发中
推荐度:
标签: 批量 办法 php
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top