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 users
que 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.