通过子键清除Laravel缓存参数
我正试图以以下方式使用Laravel 5缓存:通过子键清除Laravel缓存参数,laravel,laravel-5,laravel-5.2,Laravel,Laravel 5,Laravel 5.2,我正试图以以下方式使用Laravel 5缓存: public function putUserCacheData($key, $value){ \Cache::put($this->login, [$key => $value], 30); } 所以我有这样的结构 ['testlogin'] => [ 'param1' => 'value1', 'param2' => 'val
public function putUserCacheData($key, $value){
\Cache::put($this->login, [$key => $value], 30);
}
所以我有这样的结构
['testlogin'] => [
'param1' => 'value1',
'param2' => 'value2',
]
但我可以使用testlogin的键param1从缓存中删除项
谢谢你的帮助 试试看:
Cache::forget('testlogin.param1')
编辑
你说得对,我们不能用点符号。所以你唯一能做的就是:
$testlogin = Cache::get('testlogin');
unset(testlogin['param1']);
Cache::put('testlogin', $testlogin);
不幸的是,你不能用scratch laravel 5.*做到这一点。最好使用数据库,或者如果它的临时数据u可以轻松地使用会话:
Session::put('some', ['data' => 'value', 'key2' => 'value2']);
Session::forget('some.data');
return Session::get('some');
您可以使用缓存标记来执行此操作
public function putUserCacheData($key, $value){
\Cache::tags($this->login)->put($key, $value, 30);
}
// Remove all entries
Cache::tags($this->login)->flush();
// Remove only param1
Cache::tags($this->login)->forget('param1');
但请注意,在使用文件或数据库缓存驱动程序时,不支持缓存标记。您不能将点标记与默认缓存一起使用,否则数据库不是缓存。@TheFallen我给了他变量。“他不能用scratch laravel中的缓存来做这件事。@我知道关于标签的事情,请看他的问题,这不是关于使用标签的。这是关于Laravel4中节函数的替代。在他的问题中说是Laravel5。我使用的是文件缓存驱动程序,现在将用redis、thnx尝试您的示例!如果没有安装redis或memcache,可以使用阵列缓存驱动程序进行测试。