Buscar..


Introducción

El espacio de teclas Redis se puede considerar como una tabla hash o claves de mapeo de diccionario para las estructuras de datos en la base de datos.

Redis proporciona una amplia gama de comandos que trabajan con claves para administrar el espacio de claves, incluida la capacidad de eliminar claves, inspeccionar metadatos de claves, buscar claves y modificar ciertas propiedades de las claves.

Sintaxis

  • Patrón de llaves
  • Clave de persista
  • EXPIRE segundos clave
  • Clave de tiempo de EXPIREAT
  • Clave TTL
  • PEXPIRE clave milisegundos
  • PEXPIREAT clave milisegundos-marca de tiempo
  • Tecla PTTL
  • Tecla DESBLOQUEAR [tecla ...]
  • Tecla DEL [tecla ...]
  • SCAN cursor [MATCH pattern] [COUNT count]

Observaciones

Para los caracteres válidos en las teclas Redis , el manual lo explica completamente :

Las claves Redis son seguras para archivos binarios, esto significa que puedes usar cualquier secuencia binaria como una clave, desde una cadena como "foo" hasta el contenido de un archivo JPEG. La cadena vacía también es una clave válida.

Algunas otras reglas sobre las claves:

Las claves muy largas no son una buena idea, por ejemplo, una clave de 1024 bytes es una mala idea, no solo en cuanto a la memoria, sino también porque la búsqueda de la clave en el conjunto de datos puede requerir varias comparaciones de claves costosas. Incluso cuando la tarea en cuestión es hacer coincidir la existencia de un gran valor, recurrir al hash (por ejemplo, con SHA1) es una mejor idea, especialmente desde el punto de vista de la memoria y el ancho de banda.

Las teclas muy cortas a menudo no son una buena idea. No tiene mucho sentido escribir "u1000flw" como clave si, en cambio, puede escribir "usuario: 1000: seguidores". Este último es más legible y el espacio agregado es menor en comparación con el espacio utilizado por el propio objeto clave y el objeto de valor. Mientras que las teclas cortas obviamente consumirán un poco menos de memoria, su trabajo es encontrar el equilibrio correcto.

Trate de seguir con un esquema. Por ejemplo, "object-type: id" es una buena idea, como en "user: 1000". Los puntos o guiones se utilizan a menudo para campos de varias palabras, como en "comentario: 1234: responder.to" o "comentario: 1234: respuesta a".

El tamaño máximo permitido de la clave es de 512 MB.

Tenga cuidado al usar el comando KEYS contra un sistema de producción, ya que puede causar serios problemas de rendimiento. Si necesita hacer una búsqueda en el espacio de teclas, los comandos SCAN son una mejor alternativa.

Llaves validas

Las teclas redis son seguras para archivos binarios, por lo que, literalmente, cualquier cosa puede usarse como clave. Las únicas limitaciones son que deben ser menores a 512MB.

Ejemplos de claves válidas:

7
++++
`~!@#$%^&*()-_=+
user:10134
search/9947372/?query=this%20is%20a%28test%29%20query
<div id="div64">

Any other string less than 512MB in size.
The raw binary content of an image or other binary file.
An entire multi-line text document.
An entire SQL query.
Any integer, hexadecimal, octal, or binary value.
Anything else you can think of less than 512MB in size. 

Claves redis inválidas:

Anything larger than 512MB.

Esquemas de denominación clave

Para mayor claridad y facilidad de mantenimiento, a menudo se recomienda desarrollar un sistema o esquema para nombrar sus claves Redis. Aquí hay algunos ejemplos de sistemas comunes y mantenibles para nombrar sus claves:

user:10134
user:10134:favorites
user:10134:friends
user:10134:friends-of-friends

user:10134
user:10134/favorites
user:10134/friends
user:10134/friends.of.friends

user/10134
user/10134/favorites
user/10134/friends
user/10134/friends of friends

Tenga en cuenta que, si bien está permitido, las claves más grandes utilizan más memoria y dan como resultado tiempos de búsqueda más lentos, por lo que el uso de una clave de 500 MB podría no ser una gran idea para el rendimiento. Una mejor idea podría ser usar un hash SHA-1, SHA-256 o MD5 de un objeto binario grande como una clave:

image/9517bb726d33efdc503a43582e6ea2eea309482b
image52e9df0577fca2ce022d4e8c86b1eccb070d37bef09dec36df2fabbfa7711f5c

Listado de todas las claves

Puede enumerar todas las claves en una base de datos de Redis ejecutando los siguientes comandos desde redis-cli:

KEYS *

El parámetro para KEYS es una expresión de coincidencia de patrón de estilo glob. Ejemplos de patrones soportados incluyen:

h?llo matches hello, hallo and hxllo
h*llo matches hllo and heeeello
h[ae]llo matches hello and hallo, but not hillo
h[^e]llo matches hallo, hbllo, ... but not hello
h[a-b]llo matches hallo and hbllo

El uso del comando KEYS * puede tener efectos adversos en el rendimiento, por lo que no se recomienda para instancias de producción. Utilice la operación de EXPLORACIÓN para buscar claves en el código de producción.

TTL y clave de expiración

Los valores de caducidad de una clave pueden ser gestionados por un usuario fuera de los comandos de actualización. Redis le permite a un usuario determinar la hora actual de vida (TTL) de una tecla usando el comando TTL:

TTL key

Este comando devolverá el TTL de una tecla en segundos o devolverá los valores especiales -1 o -2. Un -1 indica que la clave es persistente (no caducará) y un -2 indica que la clave no existe.

Una clave que caduca puede hacerse persistente usando el comando PERSIST:

PERSIST KEY

y se puede hacer que una clave persistente caduque utilizando el comando EXPIRE:

EXPIRE KEY seconds

Expire también se puede utilizar para modificar el TTL de una clave existente. Alternativamente, puede usar el comando EXPIREAT con una marca de tiempo UNIX para establecer un tiempo de caducidad.

Hay versiones de milisegundos de los comandos TTL, EXPIRE y EXPIREAT que tienen el prefijo de una P.

Borrando claves

Redis proporciona dos funciones para eliminar claves de la base de datos: del y desvinculación.

La función del elimina una o más claves de la base de datos. El comando del hace que Redis recupere inmediatamente la memoria para la clave eliminada en el hilo de ejecución actual. El tiempo de ejecución para del es proporcional al número de elementos individuales eliminados de todas las claves.

La función de desvinculación actúa como el comando del, elimina una o más claves de la base de datos. Sin embargo, a diferencia del comando del, cualquier memoria utilizada por esas claves se reclama de forma asíncrona en otro hilo.

Escaneando el espacio de teclas redis

Redis proporciona el comando SCAN para iterar sobre las claves en la base de datos que coinciden con un patrón particular. Redis admite la coincidencia de patrones de estilo glob en el comando SCAN.

El comando SCAN proporciona un iterador basado en el cursor sobre el espacio de teclas Redis. La secuencia de llamada iterativa a SCAN comienza cuando el usuario realiza una llamada con el argumento del cursor establecido en 0. El resultado de esa llamada es un lote de elementos y un cursor actualizado que se suministra a la siguiente llamada a SCAN. Esta iteración continúa hasta que Redis devuelve un cursor 0.

La siguiente función de Python demuestra el uso básico de SCAN:

def scan_keys(r, pattern):
    "Returns a list of all the keys matching a given pattern"

    result = []
    cur, keys  = r.scan(cursor=0, match=pattern, count=2)
    result.extend(keys)
    while cur != 0:
        cur, keys = r.scan(cursor=cur, match=pattern, count=2)
        result.extend(keys)
        
    return result

El comando SCAN es la forma recomendada de buscar claves en la base de datos, y se recomienda sobre el comando KEYS * .



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow