Monitoreo de operaciones de caché en Laravel: Guía de eventos

  • Publicado el 17 diciembre, 2024
  • Palabras: 77

¿Quieres hacer un seguimiento de lo que sucede con tu caché? ¡Los eventos de caché de Laravel te permiten monitorear cada operación! Exploremos cómo aprovechar estos poderosos eventos.

Monitoreo de operaciones de caché en Laravel: Guía de eventos

#Eventos de caché disponibles

Laravel envía eventos para operaciones de caché de claves:

 

use IlluminateCacheEvents{
    CacheHit,
    CacheMissed,
    KeyForgotten,
    KeyWritten
};

 

#Implementación sencilla

A continuación se explica cómo escuchar eventos de caché:

 

class CacheEventSubscriber
{
    public function handleCacheHit(CacheHit $event)
    {
        Log::info("Cache hit: {$event->key}");
    }

    public function handleCacheMiss(CacheMissed $event)
    {
        Log::info("Cache miss: {$event->key}");
    }
}

 

#Ejemplo práctico

A continuación se muestra una implementación práctica para monitorear el rendimiento de la caché:

 

class CacheMonitoringService
{
    public function subscribe($events)
    {
        $events->listen(CacheHit::class, function ($event) {
            $this->recordMetric('hits', [
                'key' => $event->key,
                'tags' => $event->tags,
                'response_time' => microtime(true) - LARAVEL_START
            ]);
        });

        $events->listen(CacheMissed::class, function ($event) {
            $this->recordMetric('misses', [
                'key' => $event->key,
                'tags' => $event->tags
            ]);
        });

        $events->listen(KeyWritten::class, function ($event) {
            $this->recordMetric('writes', [
                'key' => $event->key,
                'tags' => $event->tags,
                'ttl' => $event->seconds ?? 'forever'
            ]);
        });
    }

    private function recordMetric(string $type, array $data)
    {
        // Store metrics in your monitoring system
        // Example: StatsD, Prometheus, etc.
    }
}

// En un service provider:
public function boot()
{
    if (config('cache.monitoring.enabled')) {
        (new CacheMonitoringService)->subscribe($this->app['events']);
    }
}

 

#Deshabilitar eventos

Para un mejor rendimiento, puede deshabilitar los eventos de caché en config/cache.php:

 

'redis' => [
    'driver' => 'redis',
    'events' => false,
    // other config...
],

 

Los eventos de caché brindan información valiosa sobre el comportamiento de almacenamiento en caché de su aplicación, lo que resulta perfecto para la supervisión y la depuración.

 

Antonio Jenaro
Antonio Jenaro

Web Developer

Archivado en:

Fuente: Harris Raftopoulos

Inicia la conversación

Hazte miembro de Antonio Jenaro para comenzar a comentar.

Regístrate ahora

¿Ya estás registrado? Inicia sesión