ibolit / cacher
分层缓存管理器
Requires
- php: >=7.1
- ext-redis: *
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.'*' ;)