interface CacheBackendInterface

Same name in other branches
  1. 9 core/lib/Drupal/Core/Cache/CacheBackendInterface.php \Drupal\Core\Cache\CacheBackendInterface
  2. 8.9.x core/lib/Drupal/Core/Cache/CacheBackendInterface.php \Drupal\Core\Cache\CacheBackendInterface
  3. 10 core/lib/Drupal/Core/Cache/CacheBackendInterface.php \Drupal\Core\Cache\CacheBackendInterface

Defines an interface for cache implementations.

All cache implementations have to implement this interface. Drupal\Core\Cache\DatabaseBackend provides the default implementation, which can be consulted as an example.

The cache identifiers are case sensitive.

Hierarchy

Expanded class hierarchy of CacheBackendInterface

All classes that implement CacheBackendInterface

Related topics

124 files declare their use of CacheBackendInterface
AccessPolicyProcessor.php in core/lib/Drupal/Core/Session/AccessPolicyProcessor.php
AccessPolicyProcessorTest.php in core/tests/Drupal/Tests/Core/Session/AccessPolicyProcessorTest.php
ActionManager.php in core/lib/Drupal/Core/Action/ActionManager.php
AliasManager.php in core/modules/path_alias/src/AliasManager.php
AliasPrefixList.php in core/modules/path_alias/src/AliasPrefixList.php

... See full list

7 string references to 'CacheBackendInterface'
dynamic_page_cache.services.yml in core/modules/dynamic_page_cache/dynamic_page_cache.services.yml
core/modules/dynamic_page_cache/dynamic_page_cache.services.yml
jsonapi.services.yml in core/modules/jsonapi/jsonapi.services.yml
core/modules/jsonapi/jsonapi.services.yml
migrate.services.yml in core/modules/migrate/migrate.services.yml
core/modules/migrate/migrate.services.yml
module_cache_bin.services.yml in core/modules/system/tests/modules/module_cache_bin/module_cache_bin.services.yml
core/modules/system/tests/modules/module_cache_bin/module_cache_bin.services.yml
page_cache.services.yml in core/modules/page_cache/page_cache.services.yml
core/modules/page_cache/page_cache.services.yml

... See full list

8 services use CacheBackendInterface
cache.discovery_migration in core/modules/migrate/migrate.services.yml
Drupal\Core\Cache\CacheBackendInterface
cache.dynamic_page_cache in core/modules/dynamic_page_cache/dynamic_page_cache.services.yml
Drupal\Core\Cache\CacheBackendInterface
cache.jsonapi_normalizations in core/modules/jsonapi/jsonapi.services.yml
Drupal\Core\Cache\CacheBackendInterface
cache.migrate in core/modules/migrate/migrate.services.yml
Drupal\Core\Cache\CacheBackendInterface
cache.page in core/modules/page_cache/page_cache.services.yml
Drupal\Core\Cache\CacheBackendInterface

... See full list

File

core/lib/Drupal/Core/Cache/CacheBackendInterface.php, line 16

Namespace

Drupal\Core\Cache
View source
interface CacheBackendInterface {
    
    /**
     * Indicates that the item should never be removed unless explicitly deleted.
     */
    const CACHE_PERMANENT = -1;
    
    /**
     * Returns data from the persistent cache.
     *
     * @param string $cid
     *   The cache ID of the data to retrieve.
     * @param bool $allow_invalid
     *   (optional) If TRUE, a cache item may be returned even if it is expired or
     *   has been invalidated. Such items may sometimes be preferred, if the
     *   alternative is recalculating the value stored in the cache, especially
     *   if another concurrent request is already recalculating the same value.
     *   The "valid" property of the returned object indicates whether the item is
     *   valid or not. Defaults to FALSE.
     *
     * @return object|false
     *   The cache item or FALSE on failure.
     *
     * @see \Drupal\Core\Cache\CacheBackendInterface::getMultiple()
     */
    public function get($cid, $allow_invalid = FALSE);
    
    /**
     * Returns data from the persistent cache when given an array of cache IDs.
     *
     * @param array $cids
     *   An array of cache IDs for the data to retrieve. This is passed by
     *   reference, and will have the IDs successfully returned from cache
     *   removed.
     * @param bool $allow_invalid
     *   (optional) If TRUE, cache items may be returned even if they have expired
     *   or been invalidated. Such items may sometimes be preferred, if the
     *   alternative is recalculating the value stored in the cache, especially
     *   if another concurrent thread is already recalculating the same value. The
     *   "valid" property of the returned objects indicates whether the items are
     *   valid or not. Defaults to FALSE.
     *
     * @return array
     *   An array of cache item objects indexed by cache ID.
     *
     * @see \Drupal\Core\Cache\CacheBackendInterface::get()
     */
    public function getMultiple(&$cids, $allow_invalid = FALSE);
    
    /**
     * Stores data in the persistent cache.
     *
     * Core cache implementations set the created time on cache item with
     * microtime(TRUE) rather than REQUEST_TIME_FLOAT, because the created time
     * of cache items should match when they are created, not when the request
     * started. Apart from being more accurate, this increases the chance an
     * item will legitimately be considered valid.
     *
     * @param string $cid
     *   The cache ID of the data to store.
     * @param mixed $data
     *   The data to store in the cache.
     *   Some storage engines only allow objects up to a maximum of 1MB in size to
     *   be stored by default. When caching large arrays or similar, take care to
     *   ensure $data does not exceed this size.
     * @param int $expire
     *   One of the following values:
     *   - CacheBackendInterface::CACHE_PERMANENT: Indicates that the item should
     *     not be removed unless it is deleted explicitly.
     *   - A Unix timestamp: Indicates that the item will be considered invalid
     *     after this time, i.e. it will not be returned by get() unless
     *     $allow_invalid has been set to TRUE. When the item has expired, it may
     *     be permanently deleted by the garbage collector at any time.
     * @param array $tags
     *   An array of tags to be stored with the cache item. These should normally
     *   identify objects used to build the cache item, which should trigger
     *   cache invalidation when updated. For example if a cached item represents
     *   a node, both the node ID and the author's user ID might be passed in as
     *   tags. For example ['node:123', 'node:456', 'user:789'].
     *
     * @see \Drupal\Core\Cache\CacheBackendInterface::get()
     * @see \Drupal\Core\Cache\CacheBackendInterface::getMultiple()
     */
    public function set($cid, $data, $expire = Cache::PERMANENT, array $tags = []);
    
    /**
     * Store multiple items in the persistent cache.
     *
     * @param array $items
     *   An array of cache items, keyed by cid. In the form:
     *   @code
     *   $items = [
     *     $cid => [
     *       // Required, will be automatically serialized if not a string.
     *       'data' => $data,
     *       // Optional, defaults to CacheBackendInterface::CACHE_PERMANENT.
     *       'expire' => CacheBackendInterface::CACHE_PERMANENT,
     *       // (optional) The cache tags for this item, see CacheBackendInterface::set().
     *       'tags' => [],
     *     ],
     *   ];
     *   @endcode
     */
    public function setMultiple(array $items);
    
    /**
     * Deletes an item from the cache.
     *
     * If the cache item is being deleted because it is no longer "fresh", you may
     * consider using invalidate() instead. This allows callers to retrieve the
     * invalid item by calling get() with $allow_invalid set to TRUE. In some cases
     * an invalid item may be acceptable rather than having to rebuild the cache.
     *
     * @param string $cid
     *   The cache ID to delete.
     *
     * @see \Drupal\Core\Cache\CacheBackendInterface::invalidate()
     * @see \Drupal\Core\Cache\CacheBackendInterface::deleteMultiple()
     * @see \Drupal\Core\Cache\CacheBackendInterface::deleteAll()
     */
    public function delete($cid);
    
    /**
     * Deletes multiple items from the cache.
     *
     * If the cache items are being deleted because they are no longer "fresh",
     * you may consider using invalidateMultiple() instead. This allows callers to
     * retrieve the invalid items by calling get() with $allow_invalid set to TRUE.
     * In some cases an invalid item may be acceptable rather than having to
     * rebuild the cache.
     *
     * @param array $cids
     *   An array of cache IDs to delete.
     *
     * @see \Drupal\Core\Cache\CacheBackendInterface::invalidateMultiple()
     * @see \Drupal\Core\Cache\CacheBackendInterface::delete()
     * @see \Drupal\Core\Cache\CacheBackendInterface::deleteAll()
     */
    public function deleteMultiple(array $cids);
    
    /**
     * Deletes all cache items in a bin.
     *
     * @see \Drupal\Core\Cache\CacheBackendInterface::invalidateAll()
     * @see \Drupal\Core\Cache\CacheBackendInterface::delete()
     * @see \Drupal\Core\Cache\CacheBackendInterface::deleteMultiple()
     */
    public function deleteAll();
    
    /**
     * Marks a cache item as invalid.
     *
     * Invalid items may be returned in later calls to get(), if the $allow_invalid
     * argument is TRUE.
     *
     * @param string $cid
     *   The cache ID to invalidate.
     *
     * @see \Drupal\Core\Cache\CacheBackendInterface::delete()
     * @see \Drupal\Core\Cache\CacheBackendInterface::invalidateMultiple()
     * @see \Drupal\Core\Cache\CacheBackendInterface::invalidateAll()
     */
    public function invalidate($cid);
    
    /**
     * Marks cache items as invalid.
     *
     * Invalid items may be returned in later calls to get(), if the $allow_invalid
     * argument is TRUE.
     *
     * @param string[] $cids
     *   An array of cache IDs to invalidate.
     *
     * @see \Drupal\Core\Cache\CacheBackendInterface::deleteMultiple()
     * @see \Drupal\Core\Cache\CacheBackendInterface::invalidate()
     * @see \Drupal\Core\Cache\CacheBackendInterface::invalidateAll()
     */
    public function invalidateMultiple(array $cids);
    
    /**
     * Marks all cache items as invalid.
     *
     * Invalid items may be returned in later calls to get(), if the $allow_invalid
     * argument is TRUE.
     *
     * @see \Drupal\Core\Cache\CacheBackendInterface::deleteAll()
     * @see \Drupal\Core\Cache\CacheBackendInterface::invalidate()
     * @see \Drupal\Core\Cache\CacheBackendInterface::invalidateMultiple()
     */
    public function invalidateAll();
    
    /**
     * Performs garbage collection on a cache bin.
     *
     * The backend may choose to delete expired or invalidated items.
     */
    public function garbageCollection();
    
    /**
     * Remove a cache bin.
     */
    public function removeBin();

}

Members

Title Sort descending Modifiers Object type Summary Overrides
CacheBackendInterface::CACHE_PERMANENT constant Indicates that the item should never be removed unless explicitly deleted.
CacheBackendInterface::delete public function Deletes an item from the cache. 8
CacheBackendInterface::deleteAll public function Deletes all cache items in a bin. 8
CacheBackendInterface::deleteMultiple public function Deletes multiple items from the cache. 8
CacheBackendInterface::garbageCollection public function Performs garbage collection on a cache bin. 8
CacheBackendInterface::get public function Returns data from the persistent cache. 8
CacheBackendInterface::getMultiple public function Returns data from the persistent cache when given an array of cache IDs. 8
CacheBackendInterface::invalidate public function Marks a cache item as invalid. 8
CacheBackendInterface::invalidateAll public function Marks all cache items as invalid. 8
CacheBackendInterface::invalidateMultiple public function Marks cache items as invalid. 8
CacheBackendInterface::removeBin public function Remove a cache bin. 8
CacheBackendInterface::set public function Stores data in the persistent cache. 8
CacheBackendInterface::setMultiple public function Store multiple items in the persistent cache. 8

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.