Какова цель двоеточий в ключах Redis
Я изучаю, как использовать Redis для моего проекта. У меня нет головы, что именно двоеточия используются в именах клавиш.
Я видел такие ключевые имена, как:
users:bob
color:blue
item:bag
Разделяет ли двоеточие отдельные ключи по категориям и ускоряет поиск ключей? Если это так, вы можете использовать несколько двоеточий, когда именовать ключи, чтобы разбить их на подкатегории? Наконец, они имеют какое-либо отношение к определению разных баз данных на сервере Redis?
Я прочитал документацию и выполнил многочисленные поисковые запросы Google по этому вопросу, но, как ни странно, я не могу найти ничего об этом.
Ответы
Ответ 1
Двоеточия были в предыдущих версиях redis как концепция для хранения данных с именами. В ранних версиях redis поддерживал только строки, если вы хотели сохранить электронную почту и возраст "bob", вам нужно было сохранить все это как строку, поэтому использовались двоеточия:
SET user:bob:email [email protected]
SET user:bob:age 31
У них была специальная обработка или характеристики производительности нет, но единственной целью было преобразование имен данных, чтобы найти их снова. В настоящее время вы можете использовать хеши для хранения большинства колонизированных ключей:
HSET user:bob email [email protected]
HSET user:bob age 31
Вам не нужно называть хэш "user: bob", мы могли бы назвать его "bob", но namespacing его с префиксом пользователя мы сразу узнаем, какую информацию должен иметь этот хэш.
Ответ 2
Колонки - это способ структурирования ключей. Они никак не интерпретируются redis. Вы также можете использовать любой другой разделитель, который вам нравится, или вообще ничего. Я лично предпочитаю /
, что делает мои ключи похожими на пути к файловой системе. Они не влияют на производительность, но вы не должны делать их слишком долго, так как redis должен хранить все ключи в памяти.
Хорошая ключевая структура важна для использования мощности команды sort, которая возвращает ответы на 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 искать цвета пользователя, ссылаясь на структурированные ключи.