Krinkle added a comment.
Yes, all keys passed to get/set must come from makeKey or makeGlobalKey from
the same BagOStuff class.
Where to call that depends on whether you intent to expose a general cache
interface or one that has a finegrained purpose.
Two examples. The generic one requires the caller to use (indirectly) use
`makeKey`, and the caller is responsible for the TTL etc.
name=MyAlternateCacheInterface.php
use Wikimedia\LightweightObjectStore\ExpirationAwareness;
class MyAlternateCacheInterface implements ExpirationAwareness {
__construct(BagOStuff $cache) {
$this->cache = $cache;
}
getKey ($keyspace, ...$components) {
return $this->cache->makeKey($keyspace, ...$components);
}
fetch ($key) {
return $this->cache->get($key);
}
store ($key, $val, $ttl = self:TTL_HOUR) {
return $this->cache->set($key, $val, $ttl);
}
}
The specific one takes care of that for you, and only provides getting and
storing of specific things which have known key fragments.
name=ThingCache.php
class ThingCache {
private const VERSION = 2;
private const TTL = BagOStuff::TTL_HOUR;
__construct(BagOStuff $cache) {
$this->cache = $cache;
}
private getKey (string $name, int $width, int $height) {
return $this->cache->makeKey('wikibase-thing-named', $name,
$width, $height, self::VERSION);
}
getNamedThing (ThingDesc $desc) {
return $this->cache->get($this->getKey($desc->name,
$desc->width, $desc->height));
}
setNamedThing (ThingDesc $desc, array $thingData) {
return $this->cache->set(
$this->getKey($desc->name, $desc->width, $desc->height),
$thingData,
self::TTL
);
}
}
TASK DETAIL
https://phabricator.wikimedia.org/T245396
EMAIL PREFERENCES
https://phabricator.wikimedia.org/settings/panel/emailpreferences/
To: Krinkle
Cc: Liuxinyu970226, Agusbou2015, Ladsgroup, hashar, brennen, Krinkle,
Lydia_Pintscher, Jdforrester-WMF, WMDE-leszek, Addshore, Jakob_WMDE, Tarrow,
Aklapper, Rosalie_WMDE, darthmon_wmde, Nandana, Lahi, Gq86, GoranSMilovanovic,
QZanden, LawExplorer, _jensen, rosalieper, Scott_WUaS, Jonas, Wikidata-bugs,
aude, Mbch331, Rxy, Jay8g, Krenair
_______________________________________________
Wikidata-bugs mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/wikidata-bugs