MediaWiki REL1_33
CachedBagOStuff Class Reference

Wrapper around a BagOStuff that caches data in memory. More...

Inheritance diagram for CachedBagOStuff:
Collaboration diagram for CachedBagOStuff:

Public Member Functions

 __construct (BagOStuff $backend, $params=[])
 
 add ( $key, $value, $exptime=0, $flags=0)
 Insert an item if it does not already exist.
 
 clearLastError ()
 Clear the "last error" registry.
 
 delete ( $key, $flags=0)
 Delete an item.
 
 deleteObjectsExpiringBefore ( $date, $progressCallback=false)
 Delete all objects expiring before a certain date.
 
 get ( $key, $flags=0)
 Get an item with the given key.
 
 getLastError ()
 Get the "last error" registered; clearLastError() should be called manually.
 
 incr ( $key, $value=1)
 Increase stored value of $key by $value while preserving its TTL.
 
 lock ( $key, $timeout=6, $expiry=6, $rclass='')
 Acquire an advisory lock on a key string.
 
 makeGlobalKey ( $class, $component=null)
 Make a global cache key.
 
 makeKey ( $class, $component=null)
 Make a cache key, scoped to this instance's keyspace.
 
 makeKeyInternal ( $keyspace, $args)
 Construct a cache key.
 
 set ( $key, $value, $exptime=0, $flags=0)
 Set an item.
 
 setDebug ( $bool)
 
 unlock ( $key)
 Release an advisory lock on a key string.
 
- Public Member Functions inherited from HashBagOStuff
 __construct ( $params=[])
 
 clear ()
 Clear all values in cache.
 
- Public Member Functions inherited from BagOStuff
 __construct (array $params=[])
 $params include:
 
 addBusyCallback (callable $workCallback)
 Let a callback be run to avoid wasting time on special blocking calls.
 
 changeTTL ( $key, $expiry=0, $flags=0)
 Change the expiration on a key if it exists.
 
 decr ( $key, $value=1)
 Decrease stored value of $key by $value while preserving its TTL.
 
 deleteMulti (array $keys, $flags=0)
 Batch deletion.
 
 getMulti (array $keys, $flags=0)
 Get an associative array containing the item for each of the keys that have items.
 
 getQoS ( $flag)
 
 getScopedLock ( $key, $timeout=6, $expiry=30, $rclass='')
 Get a lightweight exclusive self-unlocking lock.
 
 getWithSetCallback ( $key, $ttl, $callback, $flags=0)
 Get an item with the given key, regenerating and setting it if not found.
 
 incrWithInit ( $key, $ttl, $value=1, $init=1)
 Increase stored value of $key by $value while preserving its TTL.
 
 merge ( $key, callable $callback, $exptime=0, $attempts=10, $flags=0)
 Merge changes into the existing cache value (possibly creating a new one)
 
 setLogger (LoggerInterface $logger)
 
 setMockTime (&$time)
 
 setMulti (array $data, $exptime=0, $flags=0)
 Batch insertion/replace.
 

Protected Attributes

BagOStuff $backend
 
- Protected Attributes inherited from HashBagOStuff
mixed[] $bag = []
 
int $maxCacheKeys
 Max entries allowed.
 
- Protected Attributes inherited from BagOStuff
callable null $asyncHandler
 
int[] $attrMap = []
 Map of (ATTR_* class constant => QOS_* class constant)
 
callable[] $busyCallbacks = []
 
string $keyspace = 'local'
 
int $lastError = self::ERR_NONE
 ERR_* class constant.
 
array[] $locks = []
 Lock tracking.
 
LoggerInterface $logger
 
int $syncTimeout
 Seconds.
 

Additional Inherited Members

- Public Attributes inherited from HashBagOStuff
const KEY_CAS = 2
 
const KEY_EXP = 1
 
const KEY_VAL = 0
 
- Public Attributes inherited from BagOStuff
const READ_LATEST = 1
 Bitfield constants for get()/getMulti()
 
const READ_VERIFIED = 2
 
const WRITE_CACHE_ONLY = 8
 
const WRITE_SYNC = 4
 Bitfield constants for set()/merge()
 
- Public Attributes inherited from IExpiringStore
const ATTR_EMULATION = 1
 
const ATTR_SYNCWRITES = 2
 
const ERR_NO_RESPONSE = 1
 
const ERR_NONE = 0
 
const ERR_UNEXPECTED = 3
 
const ERR_UNREACHABLE = 2
 
const QOS_EMULATION_SQL = 1
 
const QOS_SYNCWRITES_BE = 2
 
const QOS_SYNCWRITES_NONE = 1
 
const QOS_SYNCWRITES_QC = 3
 
const QOS_SYNCWRITES_SS = 4
 
const QOS_UNKNOWN = INF
 
const TTL_DAY = 86400
 
const TTL_HOUR = 3600
 
const TTL_INDEFINITE = 0
 
const TTL_MINUTE = 60
 
const TTL_MONTH = 2592000
 
const TTL_PROC_LONG = 30
 
const TTL_PROC_SHORT = 3
 
const TTL_SECOND = 1
 
const TTL_WEEK = 604800
 
const TTL_YEAR = 31536000
 
- Protected Member Functions inherited from HashBagOStuff
 doGet ( $key, $flags=0, &$casToken=null)
 
 expire ( $key)
 
 hasKey ( $key)
 Does this bag have a non-null value for the given key?
 
- Protected Member Functions inherited from BagOStuff
 cas ( $casToken, $key, $value, $exptime=0, $flags=0)
 Check and set an item.
 
 convertToExpiry ( $exptime)
 Convert an optionally relative time to an absolute time.
 
 convertToRelative ( $exptime)
 Convert an optionally absolute expiry time to a relative time.
 
 debug ( $text)
 
 expiryIsRelative ( $exptime)
 
 getCurrentTime ()
 
 isInteger ( $value)
 Check if a value is an integer.
 
 mergeFlagMaps (array $bags)
 Merge the flag maps of one or more BagOStuff objects into a "lowest common denominator" map.
 
 mergeViaCas ( $key, $callback, $exptime=0, $attempts=10, $flags=0)
 
 setLastError ( $err)
 Set the "last error" registry.
 

Detailed Description

Wrapper around a BagOStuff that caches data in memory.

The differences between CachedBagOStuff and MultiWriteBagOStuff are:

  • CachedBagOStuff supports only one "backend".
  • There's a flag for writes to only go to the in-memory cache.
  • The in-memory cache is always updated.
  • Locks go to the backend cache (with MultiWriteBagOStuff, it would wind up going to the HashBagOStuff used for the in-memory cache).

@TODO: Make this class use composition instead of calling super

Definition at line 37 of file CachedBagOStuff.php.

Constructor & Destructor Documentation

◆ __construct()

CachedBagOStuff::__construct ( BagOStuff $backend,
$params = [] )
Parameters
BagOStuff$backendPermanent backend to use
array$paramsParameters for HashBagOStuff

Definition at line 45 of file CachedBagOStuff.php.

References $params, and and().

Member Function Documentation

◆ add()

CachedBagOStuff::add ( $key,
$value,
$exptime = 0,
$flags = 0 )

Insert an item if it does not already exist.

Parameters
string$key
mixed$value
int$exptime
int$flagsBitfield of BagOStuff::WRITE_* constants (since 1.33)
Returns
bool Success

Reimplemented from HashBagOStuff.

Definition at line 105 of file CachedBagOStuff.php.

References $value, and and().

◆ clearLastError()

CachedBagOStuff::clearLastError ( )

Clear the "last error" registry.

Since
1.23

Reimplemented from BagOStuff.

Definition at line 132 of file CachedBagOStuff.php.

◆ delete()

CachedBagOStuff::delete ( $key,
$flags = 0 )

Delete an item.

Parameters
string$key
Returns
bool True if the item was deleted or not found, false on failure
Parameters
int$flagsBitfield of BagOStuff::WRITE_* constants

Reimplemented from HashBagOStuff.

Definition at line 71 of file CachedBagOStuff.php.

◆ deleteObjectsExpiringBefore()

CachedBagOStuff::deleteObjectsExpiringBefore ( $date,
$progressCallback = false )

Delete all objects expiring before a certain date.

Parameters
string$dateThe reference date in MW format
callable | bool$progressCallbackOptional, a function which will be called regularly during long-running operations with the percentage progress as the first parameter.
Returns
bool Success, false if unimplemented

Reimplemented from BagOStuff.

Definition at line 85 of file CachedBagOStuff.php.

◆ get()

CachedBagOStuff::get ( $key,
$flags = 0 )

Get an item with the given key.

If the key includes a deterministic input hash (e.g. the key can only have the correct value) or complete staleness checks are handled by the caller (e.g. nothing relies on the TTL), then the READ_VERIFIED flag should be set. This lets tiered backends know they can safely upgrade a cached value to higher tiers using standard TTLs.

Parameters
string$key
int$flagsBitfield of BagOStuff::READ_* constants [optional]
Returns
mixed Returns false on failure or if the item does not exist

Reimplemented from BagOStuff.

Definition at line 54 of file CachedBagOStuff.php.

References $ret, and HashBagOStuff\hasKey().

Referenced by MediaWiki\Session\SessionBackend\__construct().

◆ getLastError()

CachedBagOStuff::getLastError ( )

Get the "last error" registered; clearLastError() should be called manually.

Returns
int ERR_* constant for the "last error" registry
Since
1.23

Reimplemented from BagOStuff.

Definition at line 128 of file CachedBagOStuff.php.

◆ incr()

CachedBagOStuff::incr ( $key,
$value = 1 )

Increase stored value of $key by $value while preserving its TTL.

Parameters
string$keyKey to increase
int$valueValue to add to $key (default: 1) [optional]
Returns
int|bool New value or false on failure

Reimplemented from HashBagOStuff.

Definition at line 113 of file CachedBagOStuff.php.

References $value.

◆ lock()

CachedBagOStuff::lock ( $key,
$timeout = 6,
$expiry = 6,
$rclass = '' )

Acquire an advisory lock on a key string.

Note that if reentry is enabled, duplicate calls ignore $expiry

Parameters
string$key
int$timeoutLock wait timeout; 0 for non-blocking [optional]
int$expiryLock expiry [optional]; 1 day maximum
string$rclassAllow reentry if set and the current lock used this value
Returns
bool Success

Reimplemented from BagOStuff.

Definition at line 120 of file CachedBagOStuff.php.

◆ makeGlobalKey()

CachedBagOStuff::makeGlobalKey ( $class,
$component = null )

Make a global cache key.

Since
1.27
Parameters
string$classKey class
string | null$component[optional] Key component (starting with a key collection name)
Returns
string Colon-delimited list of $keyspace followed by escaped components of $args

Reimplemented from BagOStuff.

Definition at line 98 of file CachedBagOStuff.php.

References and().

◆ makeKey()

CachedBagOStuff::makeKey ( $class,
$component = null )

Make a cache key, scoped to this instance's keyspace.

Since
1.27
Parameters
string$classKey class
string | null$component[optional] Key component (starting with a key collection name)
Returns
string Colon-delimited list of $keyspace followed by escaped components of $args

Reimplemented from BagOStuff.

Definition at line 94 of file CachedBagOStuff.php.

References and().

Referenced by MediaWiki\Session\SessionBackend\__construct(), MediaWiki\Session\TestBagOStuff\deleteSession(), MediaWiki\Session\TestBagOStuff\getSession(), MediaWiki\Session\TestBagOStuff\getSessionFromBackend(), and MediaWiki\Session\TestBagOStuff\setRawSession().

◆ makeKeyInternal()

CachedBagOStuff::makeKeyInternal ( $keyspace,
$args )

Construct a cache key.

Since
1.27
Parameters
string$keyspace
array$args
Returns
string Colon-delimited list of $keyspace followed by escaped components of $args

Reimplemented from BagOStuff.

Definition at line 90 of file CachedBagOStuff.php.

References and().

◆ set()

CachedBagOStuff::set ( $key,
$value,
$exptime = 0,
$flags = 0 )

Set an item.

Parameters
string$key
mixed$value
int$exptimeEither an interval in seconds or a unix timestamp for expiry
int$flagsBitfield of BagOStuff::WRITE_* constants
Returns
bool Success

Reimplemented from HashBagOStuff.

Definition at line 63 of file CachedBagOStuff.php.

References $value.

◆ setDebug()

CachedBagOStuff::setDebug ( $bool)
Parameters
bool$bool

Reimplemented from BagOStuff.

Definition at line 80 of file CachedBagOStuff.php.

◆ unlock()

CachedBagOStuff::unlock ( $key)

Release an advisory lock on a key string.

Parameters
string$key
Returns
bool Success

Reimplemented from BagOStuff.

Definition at line 124 of file CachedBagOStuff.php.

Member Data Documentation

◆ $backend

BagOStuff CachedBagOStuff::$backend
protected

Definition at line 39 of file CachedBagOStuff.php.


The documentation for this class was generated from the following file: