Metrics and Locking#
Metrics#
Cache facade metrics API:
setMetricsCollector(CacheMetricsCollectorInterface $metrics): selfexportMetrics(): arraysetMetricsExportHook(?callable $hook): self
Default collector is InMemoryCacheMetricsCollector.
Exported snapshots use readable adapter keys such as file, pdo,
redis, valkey, memory, scylladb, and redis_cluster.
Metric counters are tracked per adapter name, for example:
hitmisssetdeletedelete_batchremember_hitremember_miss
use Infocyph\CacheLayer\Cache\Metrics\InMemoryCacheMetricsCollector;
$cache->setMetricsCollector(new InMemoryCacheMetricsCollector());
$cache->set('k', 'v');
$cache->get('k');
$metrics = $cache->exportMetrics();
// ['file' => ['set' => 1, 'hit' => 1, ...]]
Locking and Stampede Protection#
Cache::remember() acquires a lock to prevent duplicate recomputation.
Default:
FileLockProvider
Optional providers:
RedisLockProviderMemcachedLockProviderPdoLockProvider
Facade helpers:
setLockProvider(LockProviderInterface $provider): selfuseRedisLock(?Redis $client = null, string $prefix = 'cachelayer:lock:'): selfuseValkeyLock(?Redis $client = null, string $prefix = 'cachelayer:lock:'): selfuseMemcachedLock(?Memcached $client = null, string $prefix = 'cachelayer:lock:'): self
Custom lock providers can implement LockProviderInterface:
interface LockProviderInterface
{
public function acquire(string $key, float $waitSeconds): ?LockHandle;
public function release(?LockHandle $handle): void;
}
LockHandle carries key/token/resource metadata used by providers to release locks safely.
Adapter defaults:
Redis adapter factory sets
RedisLockProviderValkey adapter factory sets
RedisLockProviderMemcached adapter factory sets
MemcachedLockProviderPDO/SQLite adapter factories set
PdoLockProviderall other adapters use
FileLockProviderby default