xlabs/resultcachebundle

Doctrine2 结果缓存包

安装: 760

依赖者: 8

建议者: 0

安全: 0

类型:symfony-bundle

2.0.0 2024-01-17 12:28 UTC

This package is auto-updated.

Last update: 2024-09-02 13:02:07 UTC


README

一个由 redis 驱动的结果缓存驱动程序。

安装

通过 composer 安装

php -d memory_limit=-1 composer.phar require xlabs/resultcachebundle

在您的 AppKernel 中

public function registerbundles()
{
    return [
    	...
    	...
    	new XLabs\ResultCacheBundle\XLabsResultCacheBundle(),
    ];
}

配置示例

以下显示默认值

# app/config/config.yml
  
x_labs_result_cache:
    redis_settings:
        host: 192.168.5.23
        port: 6379
        database_id: 9
    _key_namespace: 'xlabs:resultcache'
    custom_cache_enabled: (default false)

同时,确保您 ORM 定义使用以下参数为结果缓存驱动程序

# app/config/config.yml
...
doctrine:
    ...
    orm:
        ...
        result_cache_driver:
            type: service
            id: xlabs_result_cache

创建实体注解

当实体管理器在一个具有此注解的实体上执行 flush 操作时,它将清除指定的 ResultCache 键。

这是为特定实体设置注解的方式

<?php

    use XLabs\ResultCacheBundle\Annotations as XLabsResultCache;
    ...
  
    /**
     * @ORM\Entity
     * @ORM\Table(name="myTable")
     * @XLabsResultCache\Clear(onFlush={}, {
     *      @XLabsResultCache\Key(onFlush={"update", "delete"}, type="literal", method="getXLabsResultCacheKeyForItem"),
     *      @XLabsResultCache\Key(onFlush={"insert", "delete"}, type="literal", value="bf_galleries_"),
     *      @XLabsResultCache\Key(onFlush={"insert", "delete"}, type="prefix", method="getXLabsResultCacheKeyForUserGalleries")
     * })
     */
    class myEntity
    {
        ...
    }

onFlush
值: "insert", "update" 和 "delete"
描述: 当 flush 动作匹配此变量中列出的动作时,清除缓存键。如果设置在 "Clear" 注解下,则将影响以下所有键,除非键具有特定的 "onFlush" 变量设置。

type
值: "literal" | "prefix" | "suffix" | "regex"
描述: 将使用相应的 "delete", "deleteByRegex", "deleteByPrefix" 或 "deleteBySuffix" 方法删除结果缓存键/。

value
值: 与我们想要清除的结果缓存键匹配的字符串。

method
值: 允许在实体中创建一个方法,该方法将返回我们想要清除的结果缓存键。

如果没有设置 "value" 或 "method",则期望清除的结果缓存清除将是,如上述示例所示,"myentity_"

如果 'custom_cache_enabled' 设置为 'true',则不使用 Doctrine 的结果缓存,而是替换为自定义缓存,其中整个查询结果被序列化并存储,从而提高性能。