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


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

Я видел имена, такие как эти:

users:bob
color:blue
item:bag

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

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

2 59

2 ответа:

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

SET user:bob:email [email protected]
SET user:bob:age 31

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

 HSET user:bob email [email protected]
 HSET user:bob age 31

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

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

вы можете видеть, что структура ключа позволяет сортировать для поиска цветов пользователя, ссылаясь на структурированные ключи.