es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Inconsistencia de Redis entre bigkeys y llen.

Cuando escaneo toda la instancia de redis usando redis-cli --bigkeys, se devuelve el siguiente resultado abreviado:

-------- resumen -------
¡Muestras 241145 claves en el espacio de claves!
La longitud total de clave en bytes es 13013217 (longitud promedio 53.96)

La cadena más grande encontrada 'celery-task-meta-52b14b66-b924-4c40-b7dc-7d5b9b633470' tiene 6510 bytes
<strong>La lista más grande encontrada 'celery9' tiene 156519 elementos</strong>
El grupo más grande encontrado '<em>kombu.binding.celeryev' tiene 52 miembros
El hash más grande encontrado 'unacked' tiene 544 campos
El conjunto ordenado más grande encontrado 'unacked</em>index' tiene 550 miembros

Como puedes ver, mi lista más grande es celery9 con una longitud de 156519. Solo estoy usando un espacio de claves:

127.0.0.1:6379> informacion espacio_de_claves
<h1>Keyspace</h1>

<p>db0:keys=256672,expires=256659,avg_ttl=1701804

Pero cuando me conecto a la instancia de redis usando redis-cli o incluso con el conectador de redis desde Python y ejecuto los siguientes comandos:

127.0.0.1:6379> conseguir celery9
(nil)
127.0.0.1:6379> llenar celery9
(integer) 0
127.0.0.1:6379>

Se devuelve nil o cero como si no hubiera una clave celery9.

Entonces, la pregunta es, ¿cómo obtener la longitud correcta de esta clave? Todas las demás claves funcionan perfectamente.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Es posible que la clave “celery9” haya sido eliminada después de que se escaneara la instancia de Redis. En Redis, una clave puede tener un tiempo de vida (TTL) establecido, después del cual se eliminará automáticamente de la base de datos. También es posible que la clave haya sido renombrada o sobrescrita por un nuevo valor.

    Para verificar si la clave todavía existe en la base de datos, puede utilizar el comando “exists” en Redis CLI o en su cliente Python Redis. Por ejemplo:

    import redis
    
    redis_client = redis.Redis(host='localhost', port=6379)
    
    if redis_client.exists('celery9'):
        print(redis_client.llen('celery9'))
    else:
        print('La clave "celery9" no existe')
    

    Este código comprobará si la clave “celery9” existe en la base de datos de Redis, y si lo hace, imprimirá su longitud. Si la clave no existe, imprimirá un mensaje que indique que la clave no existe.

    Si la clave existe pero su longitud no es la esperada, es posible que la instancia de Redis no esté correctamente configurada o que haya habido un problema durante el escaneo con “redis-cli –bigkeys”. En este caso, es posible que deba investigar más y comprobar si hay errores o problemas con su instancia de Redis o con el comando de escaneo.

Comments are closed.