Какова цель двоеточий в ключах Redis
Я учусь использовать Redis для моего проекта. Одна вещь, которую я не могу понять, - это то, для чего именно двоеточия используются в названиях ключей.
Я видел имена, такие как эти:
users:bob
color:blue
item:bag
двоеточие разделяет ключи на категории и делает поиск ключей быстрее? Если да, то можете ли вы использовать несколько двоеточий при именовании ключей, чтобы разбить их на подкатегории? Наконец, они имеют какое-либо отношение к определению различных баз данных внутри серверу Redis?
Я прочитал документацию и сделали множество запросов в Яндекс по этому вопросу, но как ни странно я не могу найти ничего об этом.
2 ответа:
двоеточия были в более ранних версиях redis в качестве концепции для хранения данных пространства имен. В ранних версиях redis поддерживал только строки, Если вы хотели сохранить электронную почту и возраст "Боба", вам нужно было сохранить все это как строку, поэтому использовались двоеточия:
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", но пространство имен с пользовательским префиксом мы мгновенно знаем, какую информацию этот хэш должен/мог бы иметь.
двоеточия-это способ структурирования ключей. Они никак не интерпретируются редисом. Вы также можете использовать любой другой разделитель вам нравится или нет вообще. Я лично предпочитаю
/
, что делает мои ключи похожими на пути к файловой системе. Они не влияют на производительность, но вы не должны делать их слишком долго, так как 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'
вы можете видеть, что структура ключа позволяет сортировать для поиска цветов пользователя, ссылаясь на структурированные ключи.