Какова цель двоеточий в ключах Redis

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

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

users:bob
color:blue
item:bag

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

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

69
задан Ryan 24 August 2010 в 08:59
поделиться

2 ответа

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

87
ответ дан 24 November 2019 в 13:49
поделиться

Двоеточие — это способ структурирования ключей. Они никак не интерпретируются 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 искать цвета пользователя, ссылаясь на структурированные ключи.

38
ответ дан 24 November 2019 в 13:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: