Подтвердить что ты не робот

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

Я изучаю, как использовать Redis для моего проекта. У меня нет головы, что именно двоеточия используются в именах клавиш.

Я видел такие ключевые имена, как:

users:bob
color:blue
item:bag

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

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

4b9b3361

Ответ 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 искать цвета пользователя, ссылаясь на структурированные ключи.