$setKey = Cache::get('tags:bans:key'); // => 63bd57cbdb77d819804950 – key to the Set that contains all tagged items
现在我们可以使用该键获取所有项目:
// get all set members
$keys = Cache::connection()->smembers("prefix:$setKey:forever_ref");
$items = [];
foreach($keys as $key) {
$key = collect(explode(':', $key))->last(); // remove prefixes from key
$items[] = Cache::tags('bans')->get($key);
}
4条答案
按热度按时间h43kikqp1#
不支持底层缓存驱动器检索特定标记的所有缓存。
如果你真的需要这种特性,你应该寻找Redis,使用Redis的哈希而不是Cache的标签。
下面是一些示例代码:
调试输出将为:
jobtbby32#
我认为你用错了。作为第一个参数,你传递了缓存的密钥,作为第二个参数,作为第三个参数,以分钟为单位的过期时间。
如果你想缓存一些有理由的禁令,例如假设你在PHP中有一些发送垃圾邮件的用户,你可以使用类似这样的命令:
在这里,您将整个数组放入缓存,现在可以使用标准
foreach
循环访问项。tvokkenx3#
在 'yourKeyGoesHere' 中,您可以插入一个字符串,该字符串与带有 * 的like相同,或者直接插入确切的键。
ha5z0ras4#
Laravel将所有带标签的物品存储在一个Redis
Set
中。Laravel创建
tags:bans:key
-它本身只存储Set
的一个键,其中包含所有标记的项目现在我们可以使用该键获取所有项目: