RedisBackend extends AbstractBackend implements TaggableBackendInterface
A caching backend which stores cache entries by using Redis with phpredis PHP module. Redis is a noSQL database with very good scaling characteristics in proportion to the amount of entries and data size.
Tags
Table of Contents
Interfaces
- TaggableBackendInterface
- A contract for a cache backend which supports tagging.
Constants
- DATETIME_EXPIRYTIME_UNLIMITED = '9999-12-31T23:59:59+0000'
- FAKED_UNLIMITED_LIFETIME = 31536000
- Faked unlimited lifetime = 31536000 (1 Year).
- IDENTIFIER_DATA_PREFIX = 'identData:'
- Key prefix for identifier->data entries
- IDENTIFIER_TAGS_PREFIX = 'identTags:'
- Key prefix for identifier->tags sets
- TAG_IDENTIFIERS_PREFIX = 'tagIdents:'
- Key prefix for tag->identifiers sets
- UNLIMITED_LIFETIME = 0
Properties
- $cache : FrontendInterface
- Reference to the cache which uses this backend
- $cacheIdentifier : string
- $compression : bool
- Indicates whether data is compressed or not (requires php zlib)
- $compressionLevel : int
- -1 to 9, indicates zlib compression level: -1 = default level 6, 0 = no compression, 9 maximum compression
- $connected : bool
- Indicates whether the server is connected
- $connectionTimeout : int
- limit in seconds (default is 0 meaning unlimited)
- $context : string
- The current application context
- $database : int
- Number of selected database, defaults to 0
- $defaultLifetime : int
- Default lifetime of a cache entry in seconds
- $hostname : string
- Hostname / IP of the Redis server, defaults to 127.0.0.1.
- $keyPrefix : string
- Used as prefix for all Redis keys/identifiers
- $password : string
- Password for redis authentication
- $persistentConnection : bool
- Persistent connection
- $port : int
- Port of the Redis server, defaults to 6379
- $redis : Redis
Methods
- __construct() : mixed
- Construct this backend
- collectGarbage() : void
- With the current internal structure, only the identifier to data entries have a redis internal lifetime. If an entry expires, attached identifier to tags and tag to identifiers entries will be left over.
- 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 with the specified tag.
- flushByTags() : mixed
- Backwards compatibility safeguard since re-introducing flushByTags as API.
- get() : mixed
- Loads data from the cache.
- has() : bool
- Checks if a cache entry with the specified identifier exists.
- initializeObject() : void
- Initializes the redis backend
- remove() : bool
- Removes all cache entries matching the specified identifier.
- set() : void
- Save data in the cache
- setCache() : mixed
- Sets a reference to the cache frontend which uses this backend
- setCompression() : void
- Enable data compression
- setCompressionLevel() : void
- Set data compression level.
- setConnectionTimeout() : void
- Set connection timeout.
- setDatabase() : void
- Setter for database number
- setDefaultLifetime() : mixed
- Sets the default lifetime for this cache backend
- setHostname() : void
- Setter for server hostname
- setPassword() : void
- Setter for authentication password
- setPersistentConnection() : void
- Setter for persistent connection
- setPort() : void
- Setter for server port
- calculateExpiryTime() : DateTime
- Calculates the expiry time by the given lifetime. If no lifetime is specified, the default lifetime is used.
- canBeUsedInStringContext() : bool
- Helper method to catch invalid identifiers and tags
- getDataIdentifier() : string
- getTagIdentifier() : string
- getTagsIdentifier() : string
- removeIdentifierEntriesAndRelations() : void
- Helper method for flushByTag() Gets list of identifiers and tags and removes all relations of those tags
- setKeyPrefix() : void
Constants
DATETIME_EXPIRYTIME_UNLIMITED
    public
        mixed
    DATETIME_EXPIRYTIME_UNLIMITED
    = '9999-12-31T23:59:59+0000'
    
    
    
    
FAKED_UNLIMITED_LIFETIME
Faked unlimited lifetime = 31536000 (1 Year).
    public
        int
    FAKED_UNLIMITED_LIFETIME
    = 31536000
        In redis an entry does not have a lifetime by default (it's not "volatile"). Entries can be made volatile either with EXPIRE after it has been SET, or with SETEX, which is a combined SET and EXPIRE command. But an entry can not be made "unvolatile" again. To set a volatile entry to not volatile again, it must be DELeted and SET without a following EXPIRE. To save these additional calls on every set(), we just make every entry volatile and treat a high number as "unlimited"
Faked unlimited lifetime
Tags
IDENTIFIER_DATA_PREFIX
Key prefix for identifier->data entries
    public
        string
    IDENTIFIER_DATA_PREFIX
    = 'identData:'
    
    
    
    
IDENTIFIER_TAGS_PREFIX
Key prefix for identifier->tags sets
    public
        string
    IDENTIFIER_TAGS_PREFIX
    = 'identTags:'
    
    
    
    
TAG_IDENTIFIERS_PREFIX
Key prefix for tag->identifiers sets
    public
        string
    TAG_IDENTIFIERS_PREFIX
    = 'tagIdents:'
    
    
    
    
UNLIMITED_LIFETIME
    public
        mixed
    UNLIMITED_LIFETIME
    = 0
    
    
    
    
Properties
$cache
Reference to the cache which uses this backend
        protected
            FrontendInterface
    $cache
    
    
    
    
    
    
$cacheIdentifier
        protected
            string
    $cacheIdentifier
    
    
    
    
    
    
$compression
Indicates whether data is compressed or not (requires php zlib)
        protected
            bool
    $compression
     = false
    
    
    
    
    
$compressionLevel
-1 to 9, indicates zlib compression level: -1 = default level 6, 0 = no compression, 9 maximum compression
        protected
            int
    $compressionLevel
     = -1
    
    
    
    
    
$connected
Indicates whether the server is connected
        protected
            bool
    $connected
     = false
    
    
    
    
    
$connectionTimeout
limit in seconds (default is 0 meaning unlimited)
        protected
            int
    $connectionTimeout
     = 0
    
    
    
    
    
$context
The current application context
        protected
            string
    $context
    
        This variable is currently unused and set to "production" always. It is only kept to keep backwards compatibility.
$database
Number of selected database, defaults to 0
        protected
            int
    $database
     = 0
    
    
    
    
    
$defaultLifetime
Default lifetime of a cache entry in seconds
        protected
            int
    $defaultLifetime
     = 3600
    
    
    
    
    
$hostname
Hostname / IP of the Redis server, defaults to 127.0.0.1.
        protected
            string
    $hostname
     = '127.0.0.1'
    
    
    
    
    
$keyPrefix
Used as prefix for all Redis keys/identifiers
        protected
            string
    $keyPrefix
     = ''
    
    
    
    
    
$password
Password for redis authentication
        protected
            string
    $password
     = ''
    
    
    
    
    
$persistentConnection
Persistent connection
        protected
            bool
    $persistentConnection
     = false
    
    
    
    
    
$port
Port of the Redis server, defaults to 6379
        protected
            int
    $port
     = 6379
    
    
    
    
    
$redis
        protected
            Redis
    $redis
    
    
    
    
    
    
Methods
__construct()
Construct this backend
    public
                    __construct(string $context[, array<string|int, mixed> $options = [] ]) : mixed
    Parameters
- $context : string
- 
                    Unused, for backward compatibility only 
- $options : array<string|int, mixed> = []
- 
                    Configuration options 
Tags
collectGarbage()
With the current internal structure, only the identifier to data entries have a redis internal lifetime. If an entry expires, attached identifier to tags and tag to identifiers entries will be left over.
    public
                    collectGarbage() : void
    This method finds those entries and cleans them up.
Scales O(n*m) with number of cache entries (n) and number of tags (m)
findIdentifiersByTag()
Finds and returns all cache entry identifiers which are tagged by the specified tag.
    public
                    findIdentifiersByTag(string $tag) : array<string|int, mixed>
    Scales O(1) with number of cache entries Scales O(n) with number of tag entries
Parameters
- $tag : string
- 
                    The tag to search for 
Tags
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 with the specified tag.
    public
                    flushByTag(string $tag) : void
    Scales O(1) with number of cache entries Scales O(n^2) with number of tag entries
Parameters
- $tag : string
- 
                    Tag the entries must have 
Tags
flushByTags()
Backwards compatibility safeguard since re-introducing flushByTags as API.
    public
                    flushByTags(array<string|int, string> $tags) : mixed
    See https://review.typo3.org/#/c/50537/ comments for patch set 14.
The method is here even though it is only required for TaggableBackendInterface. We add it here to ensure third party cache backends do not fail but instead delegate to a less efficient linear flushing behavior.
Parameters
- $tags : array<string|int, string>
get()
Loads data from the cache.
    public
                    get(string $entryIdentifier) : mixed
    Scales O(1) with number of cache entries
Parameters
- $entryIdentifier : string
- 
                    An identifier which describes the cache entry to load 
Tags
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
    Scales O(1) with number of cache entries
Parameters
- $entryIdentifier : string
- 
                    Identifier specifying the cache entry 
Tags
Return values
bool —TRUE if such an entry exists, FALSE if not
initializeObject()
Initializes the redis backend
    public
                    initializeObject() : void
    Tags
remove()
Removes all cache entries matching the specified identifier.
    public
                    remove(string $entryIdentifier) : bool
    Scales O(1) with number of cache entries Scales O(n) with number of tags
Parameters
- $entryIdentifier : string
- 
                    Specifies the cache entry to remove 
Tags
Return values
bool —TRUE if (at least) an entry could be removed or FALSE if no entry was found
set()
Save data in the cache
    public
                    set(string $entryIdentifier, string $data[, array<string|int, mixed> $tags = [] ][, int $lifetime = null ]) : void
    Scales O(1) with number of cache entries Scales O(n) with number of tags
Parameters
- $entryIdentifier : string
- 
                    Identifier for this specific cache entry 
- $data : string
- 
                    Data to be stored 
- $tags : array<string|int, mixed> = []
- 
                    Tags to associate with this cache entry 
- $lifetime : int = null
- 
                    Lifetime of this cache entry in seconds. If NULL is specified, default lifetime is used. "0" means unlimited lifetime. 
Tags
setCache()
Sets a reference to the cache frontend which uses this backend
    public
                    setCache(FrontendInterface $cache) : mixed
    Parameters
- $cache : FrontendInterface
- 
                    The frontend for this backend 
setCompression()
Enable data compression
    public
                    setCompression(bool $compression) : void
    Parameters
- $compression : bool
- 
                    TRUE to enable compression 
Tags
setCompressionLevel()
Set data compression level.
    public
                    setCompressionLevel(int $compressionLevel) : void
    If compression is enabled and this is not set, gzcompress default level will be used.
Parameters
- $compressionLevel : int
- 
                    -1 to 9: Compression level 
Tags
setConnectionTimeout()
Set connection timeout.
    public
                    setConnectionTimeout(int $connectionTimeout) : void
    This value in seconds is used as a maximum number of seconds to wait if a connection can be established.
Parameters
- $connectionTimeout : int
- 
                    limit in seconds, a value greater or equal than 0 
Tags
setDatabase()
Setter for database number
    public
                    setDatabase(int $database) : void
    Parameters
- $database : int
- 
                    Database 
Tags
setDefaultLifetime()
Sets the default lifetime for this cache backend
    public
                    setDefaultLifetime(int $defaultLifetime) : mixed
    Parameters
- $defaultLifetime : int
- 
                    Default lifetime of this cache backend in seconds. If NULL is specified, the default lifetime is used. "0" means unlimited lifetime. 
Tags
setHostname()
Setter for server hostname
    public
                    setHostname(string $hostname) : void
    Parameters
- $hostname : string
- 
                    Hostname 
setPassword()
Setter for authentication password
    public
                    setPassword(string $password) : void
    Parameters
- $password : string
- 
                    Password 
setPersistentConnection()
Setter for persistent connection
    public
                    setPersistentConnection(bool $persistentConnection) : void
    Parameters
- $persistentConnection : bool
setPort()
Setter for server port
    public
                    setPort(int $port) : void
    Parameters
- $port : int
- 
                    Port 
calculateExpiryTime()
Calculates the expiry time by the given lifetime. If no lifetime is specified, the default lifetime is used.
    protected
                    calculateExpiryTime([int $lifetime = null ]) : DateTime
    Parameters
- $lifetime : int = null
- 
                    The lifetime in seconds 
Return values
DateTime —The expiry time
canBeUsedInStringContext()
Helper method to catch invalid identifiers and tags
    protected
                    canBeUsedInStringContext(mixed $variable) : bool
    Parameters
- $variable : mixed
- 
                    Variable to be checked 
Return values
boolgetDataIdentifier()
    protected
                    getDataIdentifier(string $identifier) : string
    Parameters
- $identifier : string
Return values
stringgetTagIdentifier()
    protected
                    getTagIdentifier(string $tag) : string
    Parameters
- $tag : string
Return values
stringgetTagsIdentifier()
    protected
                    getTagsIdentifier(string $identifier) : string
    Parameters
- $identifier : string
Return values
stringremoveIdentifierEntriesAndRelations()
Helper method for flushByTag() Gets list of identifiers and tags and removes all relations of those tags
    protected
                    removeIdentifierEntriesAndRelations(array<string|int, mixed> $identifiers, array<string|int, mixed> $tags) : void
    Scales O(1) with number of cache entries Scales O(n^2) with number of tags
Parameters
- $identifiers : array<string|int, mixed>
- 
                    List of identifiers to remove 
- $tags : array<string|int, mixed>
- 
                    List of tags to be handled 
setKeyPrefix()
    protected
                    setKeyPrefix(string $keyPrefix) : void
    Parameters
- $keyPrefix : string