Una convención parece ser dos puntos (:) pero soy un desarrollador web, así que personalmente prefiero la barra diagonal (/) para el separador. Slash ya es un separador tan importante dentro de las URL que están destinadas a ser localizadores uniformes de recursos, por lo que son un tipo de claves para los recursos. ¿Por qué tomar un enfoque diferente con dos puntos (:)? ¿Ayuda algo?
Considere este ejemplo:
Tenemos una API RESTful para objetos de juguete. Hay uno:
http://example.com/api/toy/234
¿Dónde lo tenemos almacenado? Usamos Redis y barras, por lo que la clave es obvia:
toy/234
Esta es la clave única para el juguete. La clave 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 clave 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 en dos puntos y viceversa. Conveniente, ¿no te parece?
Nota: asegúrese siempre de que el usuario pueda acceder solo a las cosas que desea. El enfoque de URL a clave sin procesar anterior también es capaz de obtener user/1/password
, como lo señalan los comentaristas. Esto no debería ser un problema si usa Redis como un caché público de solo lectura.
scan
no es la opción @EranH., es la mejor práctica para iterar claves.scan
se usa para iterar de manera incremental sobre una colección de elementos.