MemcachedBackend extends AbstractBackend implements TaggableBackendInterface, TransientBackendInterface

A caching backend which stores cache entries by using Memcached.

This backend uses the following types of Memcache 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

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:

  • "TYPO3"
  • Current site path obtained from Environment::getProjectPath() This prefix makes sure that keys from the different installations do not conflict.

Note: When using the Memcached backend to store values of more than ~1 MB, the data will be split into chunks to make them fit into the memcached limits.

Table of Contents

Interfaces

TaggableBackendInterface
A contract for a cache backend which supports tagging.
TransientBackendInterface
A contract for a cache backends which store variables in volatile memory and as such support receiving any variable type to store.

Constants

MAX_BUCKET_SIZE  = 1048534
Max bucket size, (1024*1024)-42 bytes

Properties

$cacheIdentifier  : string
$defaultLifetime  : int
Default lifetime of a cache entry in seconds
$flags  : int
Indicates whether the memcache uses compression or not (requires zlib), either 0 or \Memcached::OPT_COMPRESSION / MEMCACHE_COMPRESSED
$identifierPrefix  : string
A prefix to separate stored data from other data possibly stored in the memcache
$memcache  : Memcache|Memcached
Instance of the PHP Memcache class
$servers  : array<string|int, mixed>
Array of Memcache server configurations
$usedPeclModule  : string
Used PECL module for memcached

Methods

__construct()  : mixed
collectGarbage()  : void
Does nothing, as memcached does GC itself
findIdentifiersByTag()  : array<string|int, mixed>
Finds and returns all cache entry identifiers which are tagged by the specified tag
flush()  : void
Removes all cache entries of this cache.
flushByTag()  : void
Removes all cache entries of this cache which are tagged by the specified tag.
flushByTags()  : void
Removes all cache entries of this cache which are tagged by any of the specified tags.
get()  : mixed
Loads data from the cache.
has()  : bool
Checks if a cache entry with the specified identifier exists.
initializeObject()  : void
Initializes the identifier prefix
remove()  : bool
Removes all cache entries matching the specified identifier.
set()  : void
Saves data in the cache.
setCache()  : void
Sets a reference to the cache frontend which uses this backend
setDefaultLifetime()  : void
Sets the default lifetime for this cache backend
setPeclModule()  : void
Sets the preferred PECL module
addIdentifierToTags()  : void
Associates the identifier with the given tags
findTagsByIdentifier()  : array<string|int, mixed>
Finds all tags for the given identifier. This function uses reverse tag index to search for tags.
getCompression()  : bool
Getter for compression flag
removeIdentifierFromAllTags()  : void
Removes association of the identifier with the given tags
setCompression()  : void
Setter for compression flags bit
setInternal()  : bool
Stores the actual data inside memcache/memcached
setServers()  : void
Setter for servers to be used. Expects an array, the values are expected to be formatted like "<host>[:<port>]" or "unix://<path>"

Constants

MAX_BUCKET_SIZE

Max bucket size, (1024*1024)-42 bytes

protected mixed MAX_BUCKET_SIZE = 1048534

Properties

$cacheIdentifier

protected string $cacheIdentifier

$defaultLifetime

Default lifetime of a cache entry in seconds

protected int $defaultLifetime = 3600

$flags

Indicates whether the memcache uses compression or not (requires zlib), either 0 or \Memcached::OPT_COMPRESSION / MEMCACHE_COMPRESSED

protected int $flags = 0

$identifierPrefix

A prefix to separate stored data from other data possibly stored in the memcache

protected string $identifierPrefix

$memcache

Instance of the PHP Memcache class

protected Memcache|Memcached $memcache

$servers

Array of Memcache server configurations

protected array<string|int, mixed> $servers = []

$usedPeclModule

Used PECL module for memcached

protected string $usedPeclModule = ''

Methods

__construct()

public __construct([array<string|int, mixed> $options = [] ]) : mixed
Parameters
$options : array<string|int, mixed> = []

Configuration options - depends on the actual backend

collectGarbage()

Does nothing, as memcached does GC itself

public collectGarbage() : void

findIdentifiersByTag()

Finds and returns all cache entry identifiers which are tagged by the specified tag

public findIdentifiersByTag(string $tag) : array<string|int, mixed>
Parameters
$tag : string

The tag to search for

Return values
array<string|int, mixed>

An array with identifiers of all matching entries. An empty array if no entries matched

flush()

Removes all cache entries of this cache.

public flush() : void

flushByTag()

Removes all cache entries of this cache which are tagged by the specified tag.

public flushByTag(string $tag) : void
Parameters
$tag : string

The tag the entries must have

flushByTags()

Removes all cache entries of this cache which are tagged by any of the specified tags.

public flushByTags(array<string|int, mixed> $tags) : void
Parameters
$tags : array<string|int, mixed>

List of tags

get()

Loads data from the cache.

public get(string $entryIdentifier) : mixed
Parameters
$entryIdentifier : string

An identifier which describes the cache entry to load

Return values
mixed

The cache entry's content as a string or FALSE if the cache entry could not be loaded

has()

Checks if a cache entry with the specified identifier exists.

public has(string $entryIdentifier) : bool
Parameters
$entryIdentifier : string

An identifier specifying the cache entry

Return values
bool

TRUE if such an entry exists, FALSE if not

initializeObject()

Initializes the identifier prefix

public initializeObject() : void
Tags
throws
Exception

remove()

Removes all cache entries matching the specified identifier.

public remove(string $entryIdentifier) : bool

Usually this only affects one entry but if - for what reason ever - old entries for the identifier still exist, they are removed as well.

Parameters
$entryIdentifier : string

Specifies the cache entry to remove

Return values
bool

TRUE if (at least) an entry could be removed or FALSE if no entry was found

set()

Saves data in the cache.

public set(string $entryIdentifier, mixed $data[, array<string|int, mixed> $tags = [] ][, int|null $lifetime = null ]) : void
Parameters
$entryIdentifier : string

An identifier for this specific cache entry

$data : mixed

The data to be stored. mixed is allowed due to TransientBackendInterface

$tags : array<string|int, mixed> = []

Tags to associate with this cache entry. If the backend does not support tags, this option can be ignored.

$lifetime : int|null = null

Lifetime of this cache entry in seconds. If NULL is specified, the default lifetime is used. "0" means unlimited lifetime.

setDefaultLifetime()

Sets the default lifetime for this cache backend

public setDefaultLifetime(int $defaultLifetime) : void
Parameters
$defaultLifetime : int

Default lifetime of this cache backend in seconds. If NULL is specified, the default lifetime is used. "0" means unlimited lifetime.

Internal

Misused for testing purposes.

Tags
todo:

Fix tests and protect or remove

setPeclModule()

Sets the preferred PECL module

public setPeclModule(string $peclModule) : void
Parameters
$peclModule : string

addIdentifierToTags()

Associates the identifier with the given tags

protected addIdentifierToTags(string $entryIdentifier, array<string|int, mixed> $tags) : void
Parameters
$entryIdentifier : string
$tags : array<string|int, mixed>

findTagsByIdentifier()

Finds all tags for the given identifier. This function uses reverse tag index to search for tags.

protected findTagsByIdentifier(string $identifier) : array<string|int, mixed>
Parameters
$identifier : string

Identifier to find tags by

Return values
array<string|int, mixed>

getCompression()

Getter for compression flag

protected getCompression() : bool
Return values
bool

removeIdentifierFromAllTags()

Removes association of the identifier with the given tags

protected removeIdentifierFromAllTags(string $entryIdentifier) : void
Parameters
$entryIdentifier : string

setCompression()

Setter for compression flags bit

protected setCompression(bool $useCompression) : void
Parameters
$useCompression : bool

setInternal()

Stores the actual data inside memcache/memcached

protected setInternal(string $entryIdentifier, mixed $data, int $expiration) : bool
Parameters
$entryIdentifier : string
$data : mixed
$expiration : int
Return values
bool

setServers()

Setter for servers to be used. Expects an array, the values are expected to be formatted like "<host>[:<port>]" or "unix://<path>"

protected setServers(array<string|int, mixed> $servers) : void
Parameters
$servers : array<string|int, mixed>

An array of servers to add.


        
On this page

Search results