Saltar al contenido

redis key ¿convenciones de nombres?

Nuestros programadores estrellas agotaron sus provisiones de café, por su búsqueda a tiempo completo por la respuesta, hasta que Carlos encontró la solución en Bitbucket así que hoy la comparte aquí.

Solución:

¿Cuáles son las convenciones de nomenclatura normales para keys en redis? He visto valores separados por: pero no estoy seguro de cuál es la convención normal o por qué.

Sí, signo de colon : es una convención al nombrar keys. En este tutorial en el sitio web de redis se indica: Intenta ceñirte a un esquema. Por ejemplo, “tipo-objeto:id:campo” puede ser una buena idea, como en “usuario:1000:contraseña”. Me gusta usar puntos para campos de varias palabras, como en “comentario:1234:reply.to”.

¿Puede consultar solo el comienzo de la key devolver todos los usuarios?

Si te refieres a algo como consultar directamente para todos keys que comienza con user: hay un keys comando para eso. Sin embargo, este comando debe usarse solo con fines de depuración, ya que es O (N) porque está buscando en todos keys almacenado en la base de datos.

Una solución más apropiada para este problema es crear keyvamos a nombrarlo usersque almacenará todos los usuarios keyspor ejemplo, en una estructura de datos de lista o conjunto.

Usamos dos puntos (:) como separador de espacio de nombres y un hash (#) para las partes de identificación de keysp.ej:

logistics:building#23

Una convención parece ser dos puntos (:) pero Soy desarrollador web, así que personalmente prefiero la barra inclinada (/) para el separador. La barra ya es un separador tan importante dentro de las URL que están destinadas a ser localizadores uniformes de recursos, por lo que es una especie de keys por recursos ¿Por qué adoptar un enfoque diferente con dos puntos (:)? ¿Ayuda en algo?

Considere este ejemplo:

Tenemos una API RESTful para objetos de juguete. Hay uno:

http://example.com/api/toy/234 

¿Dónde lo tenemos guardado? Usamos Redis y barras para que el key es obvio:

toy/234

Este es el unico key para el juguete Él key ahora se puede usar también en el lado del cliente:


    key: "toy/234",
    color: "red",
    url: function () 
        return API_BASE_URL + this.key;
    

Un usuario solicita un objeto con key toy/666. ¿Cómo obtenerlo de Redis? Un ejemplo relacionado con Node.js:

redis.get(key, function reply_callback(error, toystring) 
    var toy = JSON.parse(toystring);
    ...

No es necesario convertir barras a dos puntos y viceversa. Conveniente, ¿no crees?

Nota: siempre asegúrese de que el usuario pueda acceder solo a las cosas que desea. La URL sin procesar akey el enfoque anterior es capaz de obtener user/1/password también, como lo señalaron los comentaristas. Esto no debería ser un problema si usa Redis como un caché público de solo lectura.

valoraciones y comentarios

Finalizando este artículo puedes encontrar los comentarios de otros creadores, tú asimismo eres capaz insertar el tuyo si te apetece.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *