Соглашение, кажется, двоеточие (:), но я веб-разработчик, поэтому я лично предпочитаю косую черту (/) для разделителя. Slash уже является настолько важным разделителем в URL-адресах, которые должны быть унифицированными локаторами ресурсов, так что это своего рода ключи для ресурсов. Зачем использовать другой подход с двоеточием (:)? Помогает ли это что-нибудь?
Рассмотрим этот пример:
У нас есть RESTful API для игрушечных объектов. Есть один:
http://example.com/api/toy/234
Где у нас это хранится? Мы используем Redis и слэши, поэтому ключ очевиден:
toy/234
Это уникальный ключ для игрушки. Теперь ключ можно использовать и на стороне клиента:
{
key: "toy/234",
color: "red",
url: function () {
return API_BASE_URL + this.key;
}
}
Пользователь запрашивает объект с ключом toy/666
. Как получить его от Redis? Пример, связанный с Node.js:
redis.get(key, function reply_callback(error, toystring) {
var toy = JSON.parse(toystring);
...
}
Не нужно конвертировать косую черту в двоеточие и наоборот. Удобно, тебе не кажется?
Примечание: всегда убедитесь, что пользователь может получить доступ только к тому, что вы хотели. Необработанный подход URL-to-key выше также может быть извлечен user/1/password
, как отмечают комментаторы. Это не должно быть проблемой, если вы используете Redis в качестве общедоступного кэша только для чтения.
scan
не является опцией @EranH., это лучшая практика для итерации ключей.scan
используется для того, чтобы постепенно перебирать коллекцию элементов.