laravel中的Cache类有一些方法,比如get('itemKey')从缓存中检索项,以及记住(‘itemKey’,'myData1','myData2')在缓存中保存项。
还有一个方法可以检查项目是否存在于缓存中: Cache::has('myKey');
(当使用基于文件的缓存驱动程序时)有没有办法获得缓存中所有项的列表?
例如,可能被命名为"Cache::all()“的内容将返回:
[
'itemKey' => [
'myData1',
'myData2'
],
'myKey' => 'foo'
]
我能想到的唯一方法就是使用Cache::has()方法遍历所有可能的键名。即aaa,aab,aac,aad...但当然,这不是一个解决方案。
我在文档或API中看不到任何描述这样的函数的东西,但我认为相信一个函数一定存在并不是不合理的。
发布于 2017-01-10 18:34:55
^上述内容在LV 5.2中不起作用
尝试此解决方案:
$storage = \Cache::getStore(); // will return instance of FileStore
$filesystem = $storage->getFilesystem(); // will return instance of Filesystem
$dir = (\Cache::getDirectory());
$keys = [];
foreach ($filesystem->allFiles($dir) as $file1) {
if (is_dir($file1->getPath())) {
foreach ($filesystem->allFiles($file1->getPath()) as $file2) {
$keys = array_merge($keys, [$file2->getRealpath() => unserialize(substr(\File::get($file2->getRealpath()), 10))]);
}
}
else {
}
}
发布于 2019-10-23 10:33:09
在\config\database.php
中,为缓存创建一个redis存储
// store cache in their own redis store ...
'cache-connection' => [
'host' => ...,
'password' => ...,
'port' => env('REDIS_PORT', 6379),
'database' => 2,
'read_write_timeout' => 60,
'timeout' => 6.0,
],
在\config\cache.php
中使用此redis数据库
'stores' => [
...
'redis' => [
'driver' => 'redis',
'connection' => 'cache-connection',
],
],
现在,您可以使用Redis类检查缓存中的内容
$a = Redis::connection('cache-connection')->keys('*');
\Log::debug($a);
https://stackoverflow.com/questions/31791178
复制相似问题