Какова цель двоеточий в 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'

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