tarcisiojr / php-cache
基于 https://github.com/spatie/once 的方法缓存系统
Requires (Dev)
- phpunit/phpunit: 5.5.*
This package is not auto-updated.
Last update: 2024-09-23 06:21:47 UTC
README
基于 once 包思想的库。此库允许缓存方法,并可以使用多种策略来控制缓存行为。
以下是一个简单的使用示例
<?php class ClasseQualquer { public function gerarNroAleatorio() { return Cache::create(function () { return rand(1, 100); }) ->once() // Cacheia o valor uma única vez. ->statefull() // Cache existente apenas em nivel de request. ->scope(false) // Cache do método entre instâncias. ->ttl(10) // Tempo do cache sera de 10 segundos. ->get(); // Executa a obtenção do valor } }
安装
编辑您的 composer.json 文件并添加以下依赖项
缓存系统接口
一些缓存策略使用自有的系统来缓存值。这些系统可以通过实现 PHP\Cache\API\CacheSystem
接口来配置自己的策略。
作为基本资源,存在两个实现
-
PHP\Cache\Core\System\FileCacheSystem
:在这个持久化缓存系统中,值被保存在一个配置的 JSON 文件中,值将保持不变,直到文件被删除和/或其值被清除。 -
PHP\Cache\Core\System\StaticArrayCacheSystem
:在这个系统中,值仅在脚本执行期间持久化,使用静态数组来维护。
使用
如果需要,请配置缓存系统
-
PHP\Cache\Core\Cache::setStateCacheSystem(CacheSystem)
:用于存储策略状态的缓存。如果希望在脚本执行之间保持此状态,则此必须是持久化缓存系统。 -
PHP\Cache\Core\Strategy\StatefullCacheStrategy::setCacheSystem(CacheSystem)
:Statefull 策略使用的持久化缓存。 -
PHP\Cache\Core\Strategy\StatelessCacheStrategy::setCacheSystem(CacheSystem)
:Stateless 策略使用的请求缓存。
然后,只需选择要缓存的方法(可以是静态的或不静态的)和/或函数,使用静态方法 PHP\Cache\Core\Cache::create
创建缓存实例。
从缓存实例中,您可以选择存储和过期策略,以及作用域。
最后,要获取缓存值(或未缓存值),只需执行方法 get()
。
示例
<?php class ClasseQualquer { public function gerarNroAleatorio() { return Cache::create(function () { return rand(1, 100); }) ->once() // Cacheia o valor uma única vez. ->statefull() // Cache existente apenas em nivel de request. ->scope(false) // Cache do método entre instâncias. ->ttl(10) // Tempo do cache sera de 10 segundos. ->get(); // Executa a obtenção do valor } }
遵循配置的策略,每次类 ClasseQualquer
的 gerarNroAleatorio
方法执行时,从第二次执行开始,返回的值将与第一次返回的值相同。此值将在 10 秒后过期,因为使用了 ttl(10)
策略,因此在此时间后将返回一个新的值。