批量删除 Redis 中的 keys 代码显示成功了,但是查看 Redis 中 key 依然存在
第一次代码结构 (遇到的问题)
代码如下:
$keys = app('redis')->keys(config('env.REDIS_PREFIX') . '*');
/*
$keys输出如下:
array:3 [▼ `0 => "m_branch_a:ea675b6b0bc6af7b00e25d4279d0447345e1eccd"
1 => "m_branch_a:permissions"
2 => "m_branch_a:globalConfig"` ]
*/
$status = app('redis')->del($keys);
/*
$status 输出值是:3
*/
以上代码正常执行,没有任何错误日志,但是查看Redis发现数据依然存在,请教一下大家,谢谢指点!!!
第二次修改代码结构(发现了"异常规律")
我测试找到了一个规律,具体代码如下:
规律一
使用dd()输出,Redis中的相关keys删除成功了。
规律二:
使用return redirect()->back();Redis中相关keys就删除不了,但是日志记录已经删除成功了,而且删除的状态也是>1的。
$keys = app('redis')->keys(config('env.REDIS_PREFIX') . '*');
if (empty($keys) || !is_array($keys)) {
Session::flash('tipWarning', '1');
Session::flash('tipMsg', '(Redis中)暂无缓存数据.');
return redirect()->back();
}
app('redis')->del($keys);
//使用下面代码,直接使用dd() Redis中就正常删除了相关keys;
dd('缓存清除成功,请手动刷新页面');
//使用下面代码,Redis中就没有删除成功相关keys;
//return redirect()->back();
我觉得很奇怪,不知道什么原因,请各位指点,谢谢了!
删除你传一个 array?
@Rekkles 对,是array
:joy: 我脚得不是一个库
這樣可行
default redis connection ?
@Rekkles laravel 中的 redis 删除传入的参数是数组
我测试找到了一个规律,具体代码如下:
规律一:
规律二:
使用return redirect()->back();Redis中相关keys就删除不了,但是日志记录已经删除成功了,而且删除的状态也是>1的。
我觉得很奇怪,不知道什么原因,请各位指点,谢谢了!
不知道这个算不算是Laravel的bug?还是我解锁的方式有问题啊,貌似没有解决方案
试试专门开一个api接口删除redis缓存,原接口请求删除redis缓存接口成功后,再使用
return redirect ()->back ();
我觉得这个应该就是bug,呵呵....至今没有发现解决方案
我觉得应该不是bug, 我在laravel5.8版本测试了一下, 你是不是用了predis这个包啊,它是有自动加上前缀的
在后面我测试了return redirect()->back();并没有出现删除不了的情况。