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