3 namespace Friendica\Core\Cache;
5 use Friendica\Core\Cache;
8 * Trait TraitCompareSetDelete
10 * This Trait is to compensate non native "exclusive" sets/deletes in caches
12 * @package Friendica\Core\Cache
14 trait TraitCompareDelete
16 abstract public function get($key);
18 abstract public function set($key, $value, $ttl = Cache::FIVE_MINUTES);
20 abstract public function delete($key);
22 abstract public function add($key, $value, $ttl = Cache::FIVE_MINUTES);
25 * NonNative - Compares if the old value is set and removes it
27 * @param string $key The cache key
28 * @param mixed $value The old value we know and want to delete
31 public function compareDelete($key, $value) {
32 if ($this->add($key . "_lock", true)) {
33 if ($this->get($key) === $value) {
35 $this->delete($key . "_lock");
38 $this->delete($key . "_lock");