hi-man / localcache
提供本地和远程缓存的缓存
Requires
- php: >=7.0.0
- ext-redis: >=4.0.0
- ext-yac: >=2.0.0
- psr/simple-cache: ^1.0
Requires (Dev)
- phpunit/phpunit: ^7.5
README
现在,让我们回到教室,教授正在讲解 cpu
的架构,就像你正在创建的软件一样,《Redis》是 L2
缓存,而《Yac》是你的软件的 L1
缓存,而《LocalCache》是《Redis》和《Yac》的缓存管理器。
所以,如果你的 Redis 服务器很忙,而且你的数据不经常改变,那么《LocalCache》就是你要找的人。
如果我看得更远,那是因为我站在巨人的肩膀上。
功能
- 具有重试机制的 Redis 客户端
- 通过在内存中缓存数据来减少 Redis 请求
- 支持 Redis 连接池
- 更优雅的异常处理程序
- 按需禁用缓存
用法
- 扩展
CacheService
类(推荐) - 在
CachePoolService
中使用静态函数 - 直接使用
LocalCache
类
要求
- PHP 7.0+
- phpredis
- yac
安装
composer require 'hi-man/localcache'
测试
composer test
类
CachePoolService
LocalCache
的池,可以静态调用
initCacheInstance
初始化 LocalCache
getCacheInstance
通过连接名称获取 LocalCache
实例
setCacheValue
设置缓存值
getCacheValue
获取缓存值
deleteByKey
通过键从缓存中删除
CacheService
使用 CachePoolService 更高效地使用的抽象类
getConfigByConnection
必须实现 通过连接标识符获取 Redis 配置
logException
必须实现 异常处理程序
setCacheValue
CachePoolService::setCacheValue
的包装器
getCacheValue
CachePoolService::getCacheValue
的包装器
deleteByKey
CachePoolService::deleteByKey
的包装器
LocalCache
在应用程序和 Redis 服务器之间提供本地缓存
构造函数
$lc = new LocalCache( '127.0.01' /* redis host */, 'Yac prefix' /* yac prefix, empty prefix will disable yac, default value is empty, max length is 20 */, 6379 /* redis port, default value is 6379 */, 3 /* redis connection timeout, in seconds, default value is 3 */, 500000 /* redis retry interval, in microseconds, default value is 500000 */, 3 /* redis read timeout, default value is 3 */, 3 /* max retry, default value is 3 */, 0 /* redis reserved, default value is 0 */ );
选择
与 Redis 命令 select
相同,但实际上不发送命令请求。
$lc->select(0 /* redis database index */);
获取
与 Redis 命令 get
相同,首先使用 yac 缓存值,如果缓存缺失则发送命令请求。
$lc->get( 'key' /* redis item key */, 'default value' /* default value if the key does not exists */ );
设置
与 Redis 命令 set
相同,重置 yac 缓存值
$lc->set( 'key', /* redis item key */ 'value', /* value to store */ 3 /* ttl */ 'default value' /* default value if the key does not exists */ );
删除 / 解链
与 Redis 命令 delete
或 unlink
相同,同时也删除 yac 缓存
$lc->delete( 'key', /* redis item key */ ); $lc->unlink( 'key', /* redis item key */ );
过期
与 Redis 命令 expire
相同,同时也重置 yac 缓存的过期时间
$lc->expire('key' /* redis item key */, 3 /* expire time in seconds */);
清除
与 Redis 命令 flushdb
相同,但刷新 所有 yac 缓存
$lc->clear();
hDel / hGetAll / hMSet / hMGet / hSet / hGet
与 Redis 命令相同
setLocalCacheTimeout
设置 yac 缓存超时,根据您的场景设置正确的值。缓存失效是一个处理概念的大概念。
$lc->setLocalCacheTimeout( 'key', /* redis item key */ 'value', /* value to store */ 3 /* ttl */ 'default value' /* default value if the key does not exists */ );
getLocalCacheTimeout
获取 yac 缓存超时
$lc->getLocalCacheTimeout();