Какова цель двоеточий в ключах Redis? - PullRequest
66 голосов
/ 24 августа 2010

Я учусь, как использовать Redis для моего проекта. Одна вещь, которую я не могу понять, это то, для чего именно используются двоеточия в именах ключей.

Я видел такие имена ключей:

users:bob
color:blue
item:bag

Разделяет ли двоеточие ключи по категориям и ускоряет ли поиск ключей? Если да, можете ли вы использовать несколько двоеточий при именовании ключей, чтобы разбить их на подкатегории? И, наконец, имеют ли они какое-либо отношение к определению различных баз данных на сервере Redis?

Я прочитал документацию и сделал многочисленные поиски в Google по этому вопросу, но, как ни странно, я не могу найти что-либо обсуждающее это.

Ответы [ 2 ]

85 голосов
/ 24 августа 2010

В более ранних версиях Redis двоеточие использовалось как концепция для хранения данных в пространстве имен. В ранних версиях redis поддерживал только строки, если вы хотели сохранить электронную почту и возраст 'bob', вы должны были хранить все как строку, поэтому использовались двоеточия:

SET user:bob:email bob@example.com
SET user:bob:age 31

Они имели нет специальных характеристик обработки или производительности в redis, единственная цель состояла в том, чтобы разместить данные, чтобы найти их снова. В настоящее время вы можете использовать хеш-коды для хранения большинства ключей в колонках:

 HSET user:bob email bob@example.com
 HSET user:bob age 31

Вам не нужно называть хеш «user: bob», мы могли бы назвать его «bob», но, используя пространство имен с префиксом пользователя, мы мгновенно узнаем, какую информацию этот хеш должен / может иметь.

37 голосов
/ 26 августа 2010

Двоеточие - это способ структурировать ключи. Redis их никак не интерпретирует. Вы также можете использовать любой другой разделитель, который вам нравится, или его нет вообще. Я лично предпочитаю /, что делает мои ключи похожими на пути файловой системы. Они не влияют на производительность, но вы не должны делать их слишком долго, поскольку Redis должен хранить все ключи в памяти.

Хорошая структура ключей важна для использования возможностей команды сортировки, которая представляет собой ответы 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 искать цвета пользователя, ссылаясь на структурированные ключи.

...