xlabs/resultcachebundle

Doctrine2 Result Cache bundle

Maintainers

👁 xlabs

Package info

bitbucket.org/xmateos/xlabs_resultcache

Type:symfony-bundle

pkg:composer/xlabs/resultcachebundle

Statistics

Installs: 781

Dependents: 8

Suggesters: 0

2.0.0 2024-01-17 12:28 UTC

Requires

Requires (Dev)

Suggests

Provides

None

Conflicts

None

Replaces

None

MIT d5bc19005f4fed710b7751ccc71428479ba9b8bc

  • Xavi Mateos <xmateos.woop@gmail.com>

xlabs resultcache bundle

This package is auto-updated.

Last update: 2026-06-29 01:34:03 UTC


README

A redis driven result cache driver.

Installation

Install through composer:

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

In your AppKernel

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

Configuration sample

Default values are shown below:

# 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)

Also, make sure you ORM definition uses the following parameters for the result_cache driver:

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

Create entity annotations

Whenever the entity manager performs a flush operation on an entity holding this annotations, it will clear the ResultCache key specified.

This is how you would set annotations for a given entity:

<?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
Values: "insert", "update" and "delete"
Description: Clear cache key when the flush action matches the action listed in this variable. If set under the "Clear" annotation, it will affect all the keys listed below, unless the key has a specific "onFlush" variable set.

type
Values: "literal" | "prefix" | "suffix" | "regex"
Description: the result cache key/s will be removed with the corresponding methods "delete", "deleteByRegex", "deleteByPrefix" or "deleteBySuffix".

value
Value: string matching the result cache key that we want to clear.

method
Value: allows creating a method in the entity that will return the result cache key that we want to clear.

If no "value" nor "method" are set, the resulting result cache clear that would expect to clear would be, following example above, "myentity_", useful for ID specific queries.

If 'custom_cache_enabled' is set to 'true', then Doctrine´s Result Cache is not used, and replaced by a custom cache instead, where the whole query result is serialized and stored, improving performance.