tedivm/stash-bundle

将 Stash 缓存库集成到 Symfony。

资助包维护!
tedivm

安装: 1,338,523

依赖者: 14

建议者: 0

安全: 0

星星: 84

监视者: 7

分支: 43

开放问题: 17

类型:symfony-bundle

v0.9.0 2023-05-24 12:46 UTC

README

License Latest Stable Version Coverage Status Total Downloads

TedivmStashBundleStash 缓存库 集成到 Symfony,为各种缓存引擎提供强大的抽象。此包提供缓存服务,将 Stash 信息添加到 Web Profiler 工具栏,并添加了 Doctrine Common Cache 库的集成。

此包和 Stash 都采用新 BSD 许可证。请在 Github 上 fork 我们!

安装

使用 composer 添加此包,可以在命令行中要求它

composer require tedivm/stash-bundle

或者在您的 composer.json 文件中直接添加它

"require": {
    "tedivm/stash-bundle": "0.7.*"
}

将包添加到 app/AppKernel.php

public function registerBundles()
{
    return array(
        new Tedivm\StashBundle\TedivmStashBundle(),
    );
}

然后在 app/config/config.yml 中设置基本配置

stash: ~

使用

获取默认缓存池服务

$pool = $this->container->get('stash');

或自定义定义的缓存池

$pool = $this->container->get('stash.custom_cache');

然后您可以直接使用缓存服务

$item = $pool->getItem($id, 'info'); // cache keys, more than one can be used

$info = $item->get();

if($item->isMiss())
{
    $info = loadInfo($id);
    $item->set($userInfo, 60); // second parameter is TTL (in seconds or future \Datetime object)
}

return $info;

(有关使用缓存服务的更多信息,请参阅 Stash 文档。)

配置

默认缓存服务

为了快速入门,您可以使用单个驱动程序定义单个缓存服务

stash:
    drivers: [ FileSystem ]
    FileSystem: ~

此缓存服务将注册为 stash.default_cache,也将自动别名到 cache

配置驱动程序

您可以直接在配置中设置缓存驱动程序的各个参数

stash:
    drivers: [ FileSystem ]
    FileSystem:
        dirSplit: 3
        path: /tmp

多个驱动程序

如果您想按顺序使用多个驱动程序,可以分别列出它们

stash:
    drivers: [ Apc, FileSystem ]
    Apc: ~
    FileSystem:
        path: /tmp

缓存服务将自动配置为复合驱动程序,按指定的顺序查询驱动程序(例如,在本示例中,首先查询 Apc,如果查询失败,然后查询 FileSystem。)

内存中

默认情况下,每个缓存服务都包括内存缓存:在单个请求的生命周期内,存储或从缓存服务检索的任何值都将存储在内存中,在检查其他驱动程序之前,将检查内存表示。

stash:
    drivers: [ Apc ]
    inMemory: false
    Apc: ~

Doctrine 适配器

Stash 提供了一个 Doctrine 缓存适配器,以便可以将 Stash 缓存服务注入到任何接受 DoctrineCacheInterface 对象的服务中。要打开服务适配器,设置参数

stash:
    drivers: [ Apc ]
    registerDoctrineAdapter: true
    Apc: ~

对于默认缓存,适配器服务将添加到容器中,名称为 stash.adapter.doctrine.default_cache。您可以在任何需要常规 Doctrine Cache 对象的地方使用它

doctrine:
    orm:
        metadata_cache_driver:
            type: service
            id: stash.adapter.doctrine.default_cache
        query_cache_driver:
            type: service
            id: stash.adapter.doctrine.default_cache
        result_cache_driver:
            type: service
            id: stash.adapter.doctrine.default_cache

会话适配器

Stash 提供了一个会话适配器,允许将 Symfony 会话直接存储在缓存中。要打开适配器,设置参数

stash:
    drivers: [ Apc ]
    registerSessionHandler: true
    Apc: ~

一旦启用,在框架包中启用它,它将自动使用

framework:
    session:
        handler_id: stash.adapter.session.default_cache

日志记录器

Stash 支持遵循 PSR 的日志库,您可以通过传递日志服务名称作为参数来指定使用的库

stash:
	drivers: [ FileSystem ]
	logger: logger
	FileSystem: ~ 

多个服务

您还可以配置多个服务,每个服务都完全独立存储

stash:
    caches:
        first:
            drivers: [ FileSystem ]
            registerDoctrineAdapter: true
            FileSystem: ~
        second:
            drivers: [ Apc, FileSystem ]
            inMemory: false
            logger: logger
            FileSystem: ~

每个服务都使用单独的、不同的内部命名空间中的键定义,因此您可以使用多个服务来避免在不同服务之间发生键冲突,即使您只有单个后端可用。

当定义了多个缓存时,您可以手动定义一个默认值,该值将被别名到stash服务。

stash:
    default_cache: first
    first:
        ...
    second:
        ...

如果不进行定义,第一个定义的服务将被设置为默认。

跟踪

StashBundle包含一个模块,用于跟踪在请求期间执行的缓存查询的所有键,以进行调试目的。默认情况下,此模块在devtest环境中启用,在其他地方禁用。但是,如果您想覆盖默认行为,可以在配置中启用或禁用此行为。

stash:
    tracking: true # enables query logging, false to disable
    tracking_values: true # enables query logging of full cache values, false to disable

Stash驱动配置

每个驱动程序都附带一组默认选项,可以单独覆盖。

FileSystem:
    dirSplit:               2
    encoder:                Native
    path:                   %kernel.cache_dir%/stash
    filePermissions:        0660
    dirPermissions:         0770
    memKeyLimit:            20
SQLite:
    path:                   %kernel.cache_dir%/stash
    filePermissions:        0660
    dirPermissions:         0770
    busyTimeout:            500
    nesting:                0
    subdriver:              PDO
Apc:
    ttl:                    300
    namespace:              <none>
Memcache:
    servers:
        - { server: 127.0.0.1, port: 11211, weight: 1 }