Uma convenção parece ser dois pontos (:), mas eu sou desenvolvedor web, então eu pessoalmente prefiro a barra (/) para o separador. O Slash já é um separador tão importante nos URLs, que devem ser Localizadores Uniformes de Recursos, para que sejam chaves de recursos. Por que adotar uma abordagem diferente com dois pontos (:)? Isso ajuda alguma coisa?
Considere este exemplo:
Temos uma API RESTful para objetos de brinquedo. Existe um:
http://example.com/api/toy/234
Onde nós o armazenamos? Usamos Redis e barras para que a chave seja óbvia:
toy/234
Esta é a chave exclusiva para o brinquedo. A chave agora pode ser usada também no lado do cliente:
{
key: "toy/234",
color: "red",
url: function () {
return API_BASE_URL + this.key;
}
}
Um usuário solicita um objeto com chave toy/666
. Como obtê-lo de Redis? Um exemplo relacionado ao Node.js.
redis.get(key, function reply_callback(error, toystring) {
var toy = JSON.parse(toystring);
...
}
Não há necessidade de converter barras em dois pontos e vice-versa. Conveniente, você não acha?
Nota: sempre assegure-se de que o usuário possa acessar apenas o que você pretendia. A abordagem bruta de URL para chave acima também pode ser buscada user/1/password
, conforme observado pelos comentaristas. Isso não deve ser um problema se você usar o Redis como um cache público somente leitura.
scan
não é a opção @EranH., é a melhor prática para iterar chaves.scan
é usado para iterar incrementalmente uma coleção de elementos.