Doctrine2 Result Cache bundle

Installs: 757

Dependents: 8

Suggesters: 0

Security: 0


2.0.0 2024-01-17 12:28 UTC

This package is auto-updated.

Last update: 2024-05-25 11:03:59 UTC


A redis driven result cache driver.


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
        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
            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:


    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

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.

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

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

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.