Una convenzione sembra essere due punti (:) ma io sono uno sviluppatore web quindi personalmente preferisco la barra (/) per il separatore. La barra è già un separatore così importante all'interno degli URL che sono destinati a essere individuatori di risorse uniformi, quindi un tipo di chiave per le risorse. Perché adottare un approccio diverso con i due punti (:)? Aiuta qualcosa?
Considera questo esempio:
Abbiamo un'API RESTful per oggetti giocattolo. Ce n'è uno:
http://example.com/api/toy/234
Dove lo abbiamo archiviato? Usiamo Redis e barre quindi la chiave è ovvia:
toy/234
Questa è la chiave unica per il giocattolo. La chiave ora può essere utilizzata anche sul lato client:
{
key: "toy/234",
color: "red",
url: function () {
return API_BASE_URL + this.key;
}
}
Un utente richiede un oggetto con chiave toy/666
. Come ottenerlo da Redis? Un esempio relativo a Node.js:
redis.get(key, function reply_callback(error, toystring) {
var toy = JSON.parse(toystring);
...
}
Non è necessario convertire le barre in due punti e viceversa. Conveniente, non credi?
Nota: assicurarsi sempre che l'utente sia in grado di accedere solo alle cose che intendevi. L'approccio raw URL-to-key sopra è anche in grado di recuperare user/1/password
, come notato dai commentatori. Questo non dovrebbe essere un problema se si utilizza Redis come cache pubblica di sola lettura.
scan
non è l'opzione @EranH., è la migliore pratica per iterare le chiavi.scan
viene utilizzato per iterare in modo incrementale una raccolta di elementi.