ray / psr-cache-module
1.3.4
2024-05-13 17:54 UTC
Requires
- php: ^7.3 || ^8.0
- doctrine/annotations: ^1.13
- psr/cache: ^1.0.1 || ^2.0 || ^3.0
- psr/simple-cache: ^1.0 || ^2.0 || ^3.0
- ray/aop: ^2.10.4
- ray/di: ^2.13.2
- symfony/cache: ^5.3.4 || ^6.0
Requires (Dev)
- ext-memcached: *
- ext-redis: *
- bamarni/composer-bin-plugin: ^1.4
- phpunit/phpunit: ^9.5.28
README
此包是 Ray.Di 模块,用于执行 PSR-6 / PSR-16 接口绑定。
您可以使用两种方式使用 PSR6 缓存接口:本地
和 公共
。 本地
用于不需要在多个 Web 服务器之间共享的缓存,而 公共
用于需要共享的缓存。
PHP8
use Psr\Cache\CacheItemPoolInterface; use Ray\PsrCacheModule\Annotation\Local; use Ray\PsrCacheModule\Annotation\Shared; class Foo { public function __construct( #[Local] private CacheItemPoolInterface $localPool, #[Shared] private CacheItemPoolInterface $sharedPool ){} }
PHP7.4
use Psr\Cache\CacheItemPoolInterface; use Ray\PsrCacheModule\Annotation\Local; use Ray\PsrCacheModule\Annotation\Shared; class Foo { private CacheItemPoolInterface $localPool; private CacheItemPoolInterface $sharedPool; /** * @Local('localPool') * @Shared('sharedPool') */ public function __construct( CacheItemPoolInterface $localPool, CacheItemPoolInterface $sharedPool ){ $this->localPool = $localPool; $this->sharedPool = $sharedPool; } }
创建对象图
use Ray\Di\AbstractModule; use Ray\Di\Injector; use Ray\PsrCacheModule\Psr6ArrayModule; $foo = (new Injector(new class extends AbstractModule { protected function configure() { $this->install(new Psr6ArrayModule()); // PSR-6 // $this->install(new Psr16CacheModule()); // PSR-16 } }))->getInstance(Foo::class); assert($foo instanceof Foo);
安装
composer require ray/psr-cache-module
模块安装
PSR-6
Psr6NullModule
此模块用于开发。
- 本地:Null
- 共享:Null
use Ray\PsrCacheModule\Psr6NullModule; new Psr6NullModule();
Psr6ArrayModule
此模块用于开发。
- 本地:Array
- 共享:Array
use Ray\PsrCacheModule\Psr6ArrayModule; new Psr6ArrayModule();
Psr6ApcuModule
此模块用于独立服务器。
- 本地:链(APC, 文件)
- 共享:链(APC, 文件)
use Ray\PsrCacheModule\Psr6ApcuModule; new Psr6ApcuModule();
Psr6RedisModule
此模块用于多服务器。
- 本地:链(APC, 文件)
- 共享: Redis
use Ray\PsrCacheModule\Psr6RedisModule; new Psr6RedisModule('redis1:6379:1'); // host:port:dbIndex
Psr6MemcachedModule
此模块用于多服务器。
- 本地:链(APC, 文件)
- 共享: Memcached
use Ray\PsrCacheModule\Psr6MemcachedModule; new Psr6MemcachedModule('memcached1:11211:60,memcached2:11211:33'); // host:port:weight
请参阅 https://php.ac.cn/manual/en/memcached.addservers.php
PSR-16
如果您安装了 Psr16CacheModule,则与 Psr6*Module 一起安装的缓存引擎可以使用 PSR-16 接口。PSR-16 绑定使用 PSR-6 绑定。
use Ray\PsrCacheModule\Psr16CacheModule; new Psr16CacheModule();
通用配置模块
CacheDirModule
指定缓存目录。可选。
use Ray\PsrCacheModule\CacheDirModule; new CacheDirModule('path/to/dir');
CacheNamespaceModule
指定缓存命名空间(当多个应用程序放置在单个缓存服务器上时)。可选。
use Ray\PsrCacheModule\CacheNamespaceModule; new CacheNamespaceModule('app1');
技术笔记
Redis、Memcached 类和 symfony/cache 适配器不可序列化,但继承自 symfony/cache 并在本包中提供的 RedisAdapter 和 MemcachedAdapter 是可序列化的。