Gene\Cache\Cache 是gene框架的缓存操作类,支持方法级缓存、实时版本缓存更新等。实时版本缓存提出了缓存的实时更新解决方案;可以有效应对各类场景下的实时缓存问题。
//框架方法级缓存模块注入配置
$config->set("cache", [
'class' => '\Gene\Cache\Cache', // 缓存类
'params' => [[
'hook' => 'memcache', //存储插件
'sign' => 'demo:', //方法级缓存key前缀
'versionSign' => 'database:', //版本缓存key前缀
]],
'instance' => false //是否单例
]);
定时方法级缓存,支持memcached、redis存储。
参数 | 类型 | 是否必填 | 注释 |
---|---|---|---|
object | array | 是 | 调用对象 |
args | array | 是 | 对象调用传参 |
ttl | int | 否 | 缓存过期时间 |
返回值: 缓存数据。
$data = $this->cache->cached(["\Models\Admin\User", "getList"], [1, 10], 3600);
本地定时方法级缓存,支持apcu存储。
参数 | 类型 | 是否必填 | 注释 |
---|---|---|---|
object | array | 是 | 调用对象 |
args | array | 是 | 对象调用传参 |
ttl | int | 否 | 缓存过期时间 |
返回值: 缓存数据。
$data = $this->cache->localCached(["\Models\Admin\User", "getList"], [1, 10], 3600);
定时方法级缓存数据过期,调用后将删除缓存数据。
参数 | 类型 | 是否必填 | 注释 |
---|---|---|---|
object | array | 是 | 调用对象 |
args | array | 是 | 对象调用传参 |
ttl | int | 否 | 缓存过期时间 |
返回值: null
$this->cache->unsetCached(["\Models\Admin\User", "getList"], [1, 10], 3600);
本地定时方法级缓存数据过期,调用后将删除缓存数据。
参数 | 类型 | 是否必填 | 注释 |
---|---|---|---|
object | array | 是 | 调用对象 |
args | array | 是 | 对象调用传参 |
ttl | int | 否 | 缓存过期时间 |
返回值: null
$this->cache->unsetLocalCached(["\Models\Admin\User", "getList"], [1, 10], 3600);
方法级实时版本缓存方法,支持memcached、redis存储;更新缓存有两种方法:一是程序更新版本号;二是使用syncClient数据实时同步中间件异步更新(https://github.com/sasou/syncClient);
参数 | 类型 | 是否必填 | 注释 |
---|---|---|---|
object | array | 是 | 调用对象 |
args | array | 是 | 对象调用传参 |
versionField | array | 是 | 版本缓存标志 |
ttl | int | 否 | 缓存过期时间 |
返回值: 缓存数据。
// 方法级实时版本缓存
$data = $this->cache->cachedVersion(["\Models\Admin\Purview",'lists'], [$group_id], ['db.sys_purview' => null], 3600);
方法级实时缓存版本key更新
$this->cache->updateVersion(['db.sys_purview' => null]);
本地方法级实时版本缓存方法,支持apcu存储;更新缓存有两种方法:一是程序更新版本号;二是使用syncClient数据实时同步中间件异步更新(https://github.com/sasou/syncClient);
参数 | 类型 | 是否必填 | 注释 |
---|---|---|---|
object | array | 是 | 调用对象 |
args | array | 是 | 对象调用传参 |
versionField | array | 是 | 版本缓存标志 |
ttl | int | 否 | 缓存过期时间 |
mode | boolean | 否 | 是否严格模式 |
严格模式下,缓存key的不一致会触发缓存更新,有一定的缓存击穿风险;非严格模式可以抵御缓存击穿;
返回值: 缓存数据。
// 方法级实时版本缓存
$data = $this->cache->localCachedVersion(["\Models\Admin\Purview",'lists'], [$group_id], ['db.sys_purview' => null], 3600);
方法级实时缓存版本key更新
$this->cache->updateVersion(['db.sys_purview' => null]);
更新缓存key。通常在数据更新时调用,执行后,相关key数据查询的缓存自动更新;
参数 | 类型 | 是否必填 | 注释 |
---|---|---|---|
versionField | array | 是 | 缓存key数组 |
返回值: boolean
$this->cache->updateVersion(['db.sys_purview' => null]);