ray/psr-cache-module

1.3.4 2024-05-13 17:54 UTC

This package is auto-updated.

Last update: 2024-09-13 18:58:54 UTC


README

codecov Type Coverage Continuous Integration Psalm level

此包是 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 是可序列化的。