MediaWiki master
|
Store key-value entries in a size-limited in-memory LRU cache. More...
Inherits Wikimedia\LightweightObjectStore\ExpirationAwareness.
Public Member Functions | |
__construct (int $maxKeys) | |
__serialize () | |
__unserialize ( $data) | |
clear ( $keys=null) | |
Clear one or several cache entries, or all cache entries. | |
get ( $key, $maxAge=INF, $default=null) | |
Get the value for a key. | |
getAllKeys () | |
getField ( $key, $field, $maxAge=INF) | |
getMaxSize () | |
Get the maximum number of keys allowed. | |
getWithSetCallback ( $key, callable $callback, $rank=self::RANK_TOP, $maxAge=INF) | |
Get an item with the given key, producing and setting it if not found. | |
has ( $key, $maxAge=INF) | |
Check if a key exists. | |
hasField ( $key, $field, $maxAge=INF) | |
makeKey (... $components) | |
Format a cache key string. | |
set ( $key, $value, $rank=self::RANK_TOP) | |
Set a key/value pair. | |
setField ( $key, $field, $value, $initRank=self::RANK_TOP) | |
setMaxSize (int $maxKeys) | |
Resize the maximum number of cache entries, removing older entries as needed. | |
setMockTime (&$time) | |
toArray () | |
Static Public Member Functions | |
static | newFromArray (array $values, $maxKeys) |
Protected Member Functions | |
getCurrentTime () | |
Store key-value entries in a size-limited in-memory LRU cache.
The last-modification timestamp of entries is internally tracked so that callers can specify the maximum acceptable age of entries in calls to the has() method. As a convenience, the hasField(), getField(), and setField() methods can be used for entries that are field/value maps themselves; such fields will have their own internally tracked last-modification timestamp.
Definition at line 34 of file MapCacheLRU.php.
MapCacheLRU::__construct | ( | int | $maxKeys | ) |
int | $maxKeys | Maximum number of entries allowed (min 1) |
Definition at line 59 of file MapCacheLRU.php.
References getCurrentTime().
MapCacheLRU::__serialize | ( | ) |
Definition at line 383 of file MapCacheLRU.php.
MapCacheLRU::__unserialize | ( | $data | ) |
Definition at line 391 of file MapCacheLRU.php.
References getCurrentTime().
MapCacheLRU::clear | ( | $keys = null | ) |
Clear one or several cache entries, or all cache entries.
string | int | array | null | $keys |
Definition at line 309 of file MapCacheLRU.php.
MapCacheLRU::get | ( | $key, | |
$maxAge = INF, | |||
$default = null ) |
Get the value for a key.
This returns null if the key is not set. If the item is already set, it will be pushed to the top of the cache.
string | $key | |
float | $maxAge | Ignore items older than this many seconds [default: INF] |
mixed | null | $default | Value to return if no key is found [default: null] |
Although sometimes this can be tainted, taint-check doesn't distinguish separate instances of MapCacheLRU, so assume untainted to cut down on false positives. See T272134.
Definition at line 169 of file MapCacheLRU.php.
References has().
Referenced by JobQueueGroup\queuesHaveJobs(), and MessageCache\refreshAndReplaceInternal().
MapCacheLRU::getAllKeys | ( | ) |
|
protected |
Definition at line 403 of file MapCacheLRU.php.
Referenced by __construct(), __unserialize(), set(), and setField().
MapCacheLRU::getField | ( | $key, | |
$field, | |||
$maxAge = INF ) |
string | int | $key | |
string | int | $field | |
float | $maxAge | Ignore items older than this many seconds [default: INF] |
Definition at line 236 of file MapCacheLRU.php.
References hasField().
MapCacheLRU::getMaxSize | ( | ) |
Get the maximum number of keys allowed.
Definition at line 327 of file MapCacheLRU.php.
MapCacheLRU::getWithSetCallback | ( | $key, | |
callable | $callback, | ||
$rank = self::RANK_TOP, | |||
$maxAge = INF ) |
Get an item with the given key, producing and setting it if not found.
If the callback returns false, then nothing is stored.
string | $key | |
callable | $callback | Callback that will produce the value |
float | $rank | Bottom fraction of the list where keys start off [default: 1.0] |
float | $maxAge | Ignore items older than this many seconds [default: INF] |
Definition at line 265 of file MapCacheLRU.php.
References has().
MapCacheLRU::has | ( | $key, | |
$maxAge = INF ) |
Check if a key exists.
string | int | $key | |
float | $maxAge | Ignore items older than this many seconds [default: INF] |
Definition at line 139 of file MapCacheLRU.php.
Referenced by get(), getWithSetCallback(), set(), and setField().
MapCacheLRU::hasField | ( | $key, | |
$field, | |||
$maxAge = INF ) |
string | int | $key | |
string | int | $field | |
float | $maxAge | Ignore items older than this many seconds [default: INF] |
Definition at line 213 of file MapCacheLRU.php.
Referenced by getField().
MapCacheLRU::makeKey | ( | $components | ) |
Format a cache key string.
string|int | ...$components Key components |
Definition at line 287 of file MapCacheLRU.php.
|
static |
array | $values | Key/value map in order of increasingly recent access |
int | $maxKeys |
Definition at line 75 of file MapCacheLRU.php.
MapCacheLRU::set | ( | $key, | |
$value, | |||
$rank = self::RANK_TOP ) |
Set a key/value pair.
This will prune the cache if it gets too large based on LRU. If the item is already set, it will be pushed to the top of the cache.
To reduce evictions due to one-off use of many new keys, $rank can be set to have keys start at the top of a bottom fraction of the list. A value of 3/8 means values start at the top of the bottom 3/8s of the list and are moved to the top of the list when accessed a second time.
string | $key | |
mixed | $value | |
float | $rank | Bottom fraction of the list where keys start off [default: 1.0] |
Definition at line 107 of file MapCacheLRU.php.
References getCurrentTime(), and has().
Referenced by JobQueueGroup\push().
MapCacheLRU::setField | ( | $key, | |
$field, | |||
$value, | |||
$initRank = self::RANK_TOP ) |
string | int | $key | |
string | int | $field | |
mixed | $value | |
float | $initRank |
Definition at line 185 of file MapCacheLRU.php.
References getCurrentTime(), and has().
MapCacheLRU::setMaxSize | ( | int | $maxKeys | ) |
Resize the maximum number of cache entries, removing older entries as needed.
int | $maxKeys | Maximum number of entries allowed (min 1) |
Definition at line 338 of file MapCacheLRU.php.
MapCacheLRU::setMockTime | ( | & | $time | ) |
float | null | &$time | Mock UNIX timestamp for testing |
Definition at line 411 of file MapCacheLRU.php.
MapCacheLRU::toArray | ( | ) |
Definition at line 88 of file MapCacheLRU.php.