ceikermann/advcache

此包已被弃用且不再维护。没有建议的替代包。

针对doctrine/cache的先进缓存库

1.0.1 2015-03-26 10:21 UTC

This package is not auto-updated.

Last update: 2020-04-03 16:14:51 UTC


README

AdvCache是Doctrine\Cache组件的扩展。AdvCache也实现了Doctrine的Cache接口,但提供了像fetchOrCall或缓存标签等一些额外的灵活方法,以更好地处理缓存。

缓存标签的使用场景

例如,你想存储用户#1的所有好友列表。用户#1有以下用户作为好友:用户#3和用户#4。正确的方法是选择一个缓存键如"user_friends:1"。在用户#4删除其账户的情况下,你必须使所有包含用户#4的用户好友列表的缓存失效。现在你可以使用缓存标签系统。只需将缓存键"user_friends:1"标记为"user:4",因为"user:4"在列表中,在账户删除的情况下,你可以使所有分配给标签"user:4"的缓存失效。

安装

通过composer安装非常简单

composer require ceikermann/advcache

或者将其添加到你的composer.json文件中。

使用

在fetch方法中更改默认返回值

$data = $advcache->fetch('somecacheid', array());
$data[] = 'some new data';

如果缓存中不存在somecacheid条目,它将返回一个空数组而不是false。

获取或执行回调

$data = $advcache->fetchOrCall('somecacheid', function() {
    return $someNewData;
});

在这种情况下,如果缓存中不存在somecacheid条目,它将执行回调并保存回调的结果并返回它。

为缓存分配标签

$advcache->assignCacheIdToTag('somecacheid1', 'tag1');
$advcache->assignCacheIdToTag('somecacheid2', 'tag1');

在这种情况下,标签1分配给了两个缓存ID(somecacheid1somecacheid2)。

按标签删除

$advcache->deleteByTag('tag1');

在这种情况下,它将删除缓存somecacheid1somecacheid2,因为它们都被分配给了tag1

在save方法中为缓存分配标签

$advcache->save('somecacheid1', $someCachedData, 0, array('tag1', 'tag2'));

在save方法中,可以直接使用标签分配缓存。