PHP操作redis删除指定前缀的key值
文章目录
- 使用场景
- 在redis数据库用命令行删除指定前缀缓存
- PHP操作redis删除指定前缀的key值
使用场景
在项目中,用redis做缓存。不同场景下用不同的缓存名称,同一个场景下,会用相同的前缀来缓存数据,比如产品数据缓存,goods_1,goods_2,goods_3等,会用名称加上id的形式来缓存。如果,我需要删除所有的产品缓存,又不想删除其他缓存,就会用到redis删除指定前缀的缓存。
在redis数据库用命令行删除指定前缀缓存
这是命令行里写法
redis-cli --scan --pattern "goods_*" | xargs -L 2000 redis-cli del
其中xargs -L指令表示xargs一次读取的行数,也就是每次删除的key数量,一次读取太多xargs会报错
PHP操作redis删除指定前缀的key值
$redis = new \Redis();
$redis->connect('127.0.0.1', 6379);
$redis->auth('yourpwd');
$iterator = null; // 初始迭代器设置为null
$pattern = 'goods_*'; // 指定匹配模式
$count = 100; // 每次迭代返回的键的最大数量
// 使用SCAN命令迭代匹配的键
while ($keys = $redis->scan($iterator, $pattern, $count)) {
foreach ($keys as $key) {
$redis->del($key); // 删除匹配到的键
}
}
注释写的比较明白,不单独解释了。