Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/infrastructure/cache/PhutilKeyValueCache.php
12241 views
1
<?php
2
3
/**
4
* Interface to a key-value cache like Memcache or APC. This class provides a
5
* uniform interface to multiple different key-value caches and integration
6
* with PhutilServiceProfiler.
7
*
8
* @task kvimpl Key-Value Cache Implementation
9
*/
10
abstract class PhutilKeyValueCache extends Phobject {
11
12
13
/* -( Key-Value Cache Implementation )------------------------------------- */
14
15
16
/**
17
* Determine if the cache is available. For example, the APC cache tests if
18
* APC is installed. If this method returns false, the cache is not
19
* operational and can not be used.
20
*
21
* @return bool True if the cache can be used.
22
* @task kvimpl
23
*/
24
public function isAvailable() {
25
return false;
26
}
27
28
29
/**
30
* Get a single key from cache. See @{method:getKeys} to get multiple keys at
31
* once.
32
*
33
* @param string Key to retrieve.
34
* @param wild Optional value to return if the key is not found. By
35
* default, returns null.
36
* @return wild Cache value (on cache hit) or default value (on cache
37
* miss).
38
* @task kvimpl
39
*/
40
final public function getKey($key, $default = null) {
41
$map = $this->getKeys(array($key));
42
return idx($map, $key, $default);
43
}
44
45
46
/**
47
* Set a single key in cache. See @{method:setKeys} to set multiple keys at
48
* once.
49
*
50
* See @{method:setKeys} for a description of TTLs.
51
*
52
* @param string Key to set.
53
* @param wild Value to set.
54
* @param int|null Optional TTL.
55
* @return this
56
* @task kvimpl
57
*/
58
final public function setKey($key, $value, $ttl = null) {
59
return $this->setKeys(array($key => $value), $ttl);
60
}
61
62
63
/**
64
* Delete a key from the cache. See @{method:deleteKeys} to delete multiple
65
* keys at once.
66
*
67
* @param string Key to delete.
68
* @return this
69
* @task kvimpl
70
*/
71
final public function deleteKey($key) {
72
return $this->deleteKeys(array($key));
73
}
74
75
76
/**
77
* Get data from the cache.
78
*
79
* @param list<string> List of cache keys to retrieve.
80
* @return dict<string, wild> Dictionary of keys that were found in the
81
* cache. Keys not present in the cache are
82
* omitted, so you can detect a cache miss.
83
* @task kvimpl
84
*/
85
abstract public function getKeys(array $keys);
86
87
88
/**
89
* Put data into the key-value cache.
90
*
91
* With a TTL ("time to live"), the cache will automatically delete the key
92
* after a specified number of seconds. By default, there is no expiration
93
* policy and data will persist in cache indefinitely.
94
*
95
* @param dict<string, wild> Map of cache keys to values.
96
* @param int|null TTL for cache keys, in seconds.
97
* @return this
98
* @task kvimpl
99
*/
100
abstract public function setKeys(array $keys, $ttl = null);
101
102
103
/**
104
* Delete a list of keys from the cache.
105
*
106
* @param list<string> List of keys to delete.
107
* @return this
108
* @task kvimpl
109
*/
110
abstract public function deleteKeys(array $keys);
111
112
113
/**
114
* Completely destroy all data in the cache.
115
*
116
* @return this
117
* @task kvimpl
118
*/
119
abstract public function destroyCache();
120
121
}
122
123