Я учусь, как использовать Redis для моего проекта. Одна вещь, которую я не могу понять, это то, для чего именно используются двоеточия в именах ключей.
Я видел такие имена ключей:
users:bob
color:blue
item:bag
Разделяет ли двоеточие ключи по категориям и ускоряет ли поиск ключей? Если да, можете ли вы использовать несколько двоеточий при именовании ключей, чтобы разбить их на подкатегории? И, наконец, имеют ли они какое-либо отношение к определению различных баз данных на сервере Redis?
Я прочитал документацию и провел многочисленные поиски в Google по этому вопросу, но, как ни странно, я не могу найти что-либо обсуждающее это.
Двоеточие использовалось в более ранних версиях Redis как концепция для хранения данных в пространстве имен. В ранних версиях redis поддерживал только строки, если вы хотели сохранить электронную почту и возраст 'bob', вам нужно было сохранить все это как строку, поэтому использовались двоеточия:
SET user:bob:email bob@example.com
SET user:bob:age 31
У них было no special с характеристиками обработки или производительности в Redis, единственная цель заключалась в создании пространства имен данных, чтобы найти их снова. В настоящее время вы можете использовать хэши для хранения большинства ключей с двоеточиями:
HSET user:bob email bob@example.com
HSET user:bob age 31
Вам не нужно называть хэш «user: bob», мы могли бы назвать его «bob», но, используя пространство имен с помощью префикса user-prefix, мы сразу узнаем, какой информация, которую должен / мог бы содержать этот хеш.
Двоеточие — это способ структурирования ключей. Они никак не интерпретируются redis. Вы также можете использовать любой другой разделитель, который вам нравится, или вообще не использовать его. Лично я предпочитаю /
, из-за чего мои ключи выглядят как пути к файловой системе. Они не влияют на производительность, но вы не должны делать их чрезмерно длинными, так как Redis должен хранить все ключи в памяти.
Хорошая ключевая структура важна для использования возможностей команды sort, которая является ответом Redis на соединение SQL.
GET user:bob:color -> 'blue'
GET user:alice:color -> 'red'
SMEMBERS user:peter:friends -> alice, bob
SORT user:peter:friends BY NOSORT GET user:*:color -> 'blue', 'red'
Вы можете видеть, что структура ключей позволяет SORT искать цвета пользователя, ссылаясь на структурированные ключи.