MemcachedBackend
class MemcachedBackend extends AbstractBackend implements TaggableBackendInterface, PhpCapableBackendInterface (View source)
A caching backend which stores cache entries by using Memcache/Memcached.
This backend uses the following types of cache keys:
- tag_xxx xxx is tag name, value is array of associated identifiers identifier. This is "forward" tag index. It is mainly used for obtaining content by tag (get identifier by tag -> get content by identifier)
- ident_xxx xxx is identifier, value is array of associated tags. This is "reverse" tag index. It provides quick access for all tags associated with this identifier and used when removing the identifier
- tagIndex Value is a List of all tags (array)
Each key is prepended with a prefix. By default prefix consists from two parts separated by underscore character and ends in yet another underscore character:
- "Flow"
- MD5 of script path and filename and SAPI name This prefix makes sure that keys from the different installations do not conflict.
Note: When using the Memcache backend to store values of more than ~1 MB, the data will be split into chunks to make them fit into the caches limits.
Traits
Constants
DATETIME_EXPIRYTIME_UNLIMITED |
|
UNLIMITED_LIFETIME |
|
MAX_BUCKET_SIZE |
Max bucket size, (1024*1024)-42 bytes |
Properties
protected FrontendInterface | $cache | Reference to the cache frontend which uses this backend |
from AbstractBackend |
protected string | $cacheIdentifier | from AbstractBackend | |
protected string | $identifierPrefix | A prefix to separate stored data from other data possible stored in the memcache |
|
protected int | $defaultLifetime | Default lifetime of a cache entry in seconds |
from AbstractBackend |
protected EnvironmentConfiguration | $environmentConfiguration | from AbstractBackend | |
protected array | $_requiredEntryIdentifiers | from RequireOnceFromValueTrait | |
protected Memcache|Memcached | $memcache | Instance of the PHP Memcache/Memcached class |
|
protected array | $servers | Array of Memcache server configurations |
|
protected int | $flags | Indicates whether the memcache uses compression or not (requires zlib), either 0 or MEMCACHE_COMPRESSED |
Methods
Constructs this backend
No description
Sets the default lifetime for this cache backend
Calculates the expiry time by the given lifetime. If no lifetime is specified, the default lifetime is used.
Returns the internally used, prefixed entry identifier for the given public entry identifier.
Loads PHP code from the cache and require_onces it right away.
Setter for servers to be used. Expects an array, the values are expected
to be formatted like "
Setter for compression flags bit
Saves data in the cache.
Stores an item on the server
Loads data from the cache.
Checks if a cache entry with the specified identifier exists.
Removes all cache entries matching the specified identifier.
Finds and returns all cache entry identifiers which are tagged by the specified tag.
Finds all tags for the given identifier. This function uses reverse tag index to search for tags.
Removes all cache entries of this cache.
Removes all cache entries of this cache which are tagged by the specified tag.
Associates the identifier with the given tags
Removes association of the identifier with the given tags
Does nothing, as memcache/memcached does GC itself
Details
__construct(EnvironmentConfiguration $environmentConfiguration, array $options = [])
Constructs this backend
protected void
setProperties(array $properties, bool $throwExceptionIfPropertyNotSettable = true)
No description
protected bool
setProperty(string $propertyName, mixed $propertyValue)
No description
void
setCache(FrontendInterface $cache)
Initializes the identifier prefix when setting the cache.
void
setDefaultLifetime(int|string $defaultLifetime)
Sets the default lifetime for this cache backend
protected DateTime
calculateExpiryTime(int $lifetime = null)
Calculates the expiry time by the given lifetime. If no lifetime is specified, the default lifetime is used.
string
getPrefixedIdentifier(string $entryIdentifier)
Returns the internally used, prefixed entry identifier for the given public entry identifier.
While Flow applications will mostly refer to the simple entry identifier, it may be necessary to know the actual identifier used by the cache backend in order to share cache entries with other applications. This method allows for retrieving it.
mixed
requireOnce(string $entryIdentifier)
Loads PHP code from the cache and require_onces it right away.
protected void
setServers(array $servers)
Setter for servers to be used. Expects an array, the values are expected
to be formatted like "
protected void
setCompression(bool $useCompression)
Setter for compression flags bit
void
set(string $entryIdentifier, string $data, array $tags = [], int $lifetime = null)
Saves data in the cache.
protected bool
setItem(string $key, string $value, int $expiration)
Stores an item on the server
mixed
get(string $entryIdentifier)
Loads data from the cache.
bool
has(string $entryIdentifier)
Checks if a cache entry with the specified identifier exists.
bool
remove(string $entryIdentifier)
Removes all cache entries matching the specified identifier.
Usually this only affects one entry but if - for what reason ever - old entries for the identifier still exist, they are removed as well.
array
findIdentifiersByTag(string $tag)
Finds and returns all cache entry identifiers which are tagged by the specified tag.
protected array
findTagsByIdentifier(string $identifier)
Finds all tags for the given identifier. This function uses reverse tag index to search for tags.
void
flush()
Removes all cache entries of this cache.
int
flushByTag(string $tag)
Removes all cache entries of this cache which are tagged by the specified tag.
protected void
addIdentifierToTags(string $entryIdentifier, array $tags)
Associates the identifier with the given tags
protected void
removeIdentifierFromAllTags(string $entryIdentifier)
Removes association of the identifier with the given tags
void
collectGarbage()
Does nothing, as memcache/memcached does GC itself