xlabs / resultcachebundle
Doctrine2 结果缓存包
2.0.0
2024-01-17 12:28 UTC
Requires
- php: >=7.2
- predis/predis: ^1.1
- symfony/framework-bundle: ^4.4|^5.0
Requires (Dev)
- symfony/expression-language: ^4.4|^5.0
Suggests
- symfony/routing: For using the RoutingExtension
- symfony/var-dumper: For using the DumpExtension
- symfony/yaml: For using the YamlExtension
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 的结果缓存,而是替换为自定义缓存,其中整个查询结果被序列化并存储,从而提高性能。