12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?php
- /**
- * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors
- * SPDX-License-Identifier: AGPL-3.0-or-later
- */
- namespace OC\Memcache;
- use OCP\Cache\CappedMemoryCache;
- use OCP\ICache;
- /**
- * Wrap a cache instance with an extra later of local, in-memory caching
- */
- class WithLocalCache implements ICache {
- private ICache $inner;
- private CappedMemoryCache $cached;
- public function __construct(ICache $inner, int $localCapacity = 512) {
- $this->inner = $inner;
- $this->cached = new CappedMemoryCache($localCapacity);
- }
- public function get($key) {
- if (isset($this->cached[$key])) {
- return $this->cached[$key];
- } else {
- $value = $this->inner->get($key);
- if (!is_null($value)) {
- $this->cached[$key] = $value;
- }
- return $value;
- }
- }
- public function set($key, $value, $ttl = 0) {
- $this->cached[$key] = $value;
- return $this->inner->set($key, $value, $ttl);
- }
- public function hasKey($key) {
- return isset($this->cached[$key]) || $this->inner->hasKey($key);
- }
- public function remove($key) {
- unset($this->cached[$key]);
- return $this->inner->remove($key);
- }
- public function clear($prefix = '') {
- $this->cached->clear();
- return $this->inner->clear($prefix);
- }
- public static function isAvailable(): bool {
- return false;
- }
- }
|