ibolit/cacher

该包已被废弃,不再维护。未建议替代包。
最新版本(1.0.6)的包没有可用的许可证信息。

分层缓存管理器

1.0.6 2020-12-16 12:12 UTC

This package is auto-updated.

Last update: 2024-07-22 18:52:01 UTC


README

缓存元素及其依赖关系

缓存名称 - 识别缓存类型的唯一名称。构建缓存键时,将添加唯一用户标识符和一系列静态前缀。

缓存元素 - 文本格式或通常是json格式的数据块。但它可以包含任意数组数据(在Redis二进制安全中的STRING!)。

缓存元素可以是定制的(针对特定用户)或公共的。

依赖项 - 需要使某些其他用户的缓存无效。

使用单独的容器存储依赖关系字典,每个缓存类型实现为SET类型的元素。

键结构

dict:dep

elem

其中

每个元素都是一个具有4个元素的关联数组(HASH / MAP)

data - 缓存数据

created_at - UNIXTIME格式的创建日期

hit_count - 元素访问次数

last_hit - 最后访问日期(对于异步垃圾收集器算法是必需的)

expires_at - 缓存有效期的日期

库类结构

库包括4个类

CacheManager - 高级接口,实现缓存和无效化逻辑,创建键名和其他操作。

CacheDriver - 抽象类,表示实现与特定缓存存储系统低级操作的接口。

RedisCacheDriver - CacheDriver的子类,实现基于phpredis库的缓存操作。

CacheElemVO - 类,实现ValueObject模式,用于在库子系统之间交换数据。

使用示例

创建CacheManager实例

>$cmInstance = new CacheManager(new RedisCacheDriver('test:', '127.0.0.1',''));

使用CacheElemVO实例创建100,000个个性化缓存元素

>$vo1 = new CacheElemVO();

>for($i = 0;$i<100000;$i++){

$vo1->setName("simpl".$i);

$vo1->setUid(1000+$i);

$vo1->setCacheData('y1213ertyer'.$i);

$vo1->setExpired(time() + 86400);

$cmInstance->set($vo);

>}

获取缓存元素

>$vo2 = new CacheElemVO();

>$vo2->setName("simpl10000”);

>$vo2->setUid(11000);

>$data = $cmInstance->get($vo2);

添加依赖项

>$v3 = new CacheElemVO();

>$v3->setName("simp534534");

>$cmInstance->setDependency($vo, $v1);

启动异步无效化器

>$cmInstance->invalidateByTime(CacheManager::KEY_ELEM_PREFIX.

                          CacheManager::KEY_DIVIDER.'*'
                           ;)