Яке призначення двокрапки у клавішах Redis


77

Я вчусь, як використовувати Redis для свого проекту. Одна річ, у мене немає голови, це те, для чого саме використовуються двокрапки в назвах ключів.

Я бачив такі імена ключів, як такі:

users:bob
color:blue
item:bag

Чи розділяє двокрапка клавіші на категорії та пришвидшує пошук ключів? Якщо так, чи можете ви використовувати кілька двокрапок при іменуванні клавіш, щоб розбити їх на підкатегорії? Нарешті, чи мають вони щось спільне з визначенням різних баз даних на сервері Redis?

Я прочитав документацію та здійснив численні пошуки в Google з цього приводу, але як не дивно, я не можу знайти нічого, що б це обговорювало.

Відповіді:


97

Двокрапки були в попередніх версіях redis як концепція для зберігання даних з простором імен. У ранніх версіях redis підтримував лише рядки, якщо ви хотіли зберігати електронну пошту та вік "bob", ви повинні були зберігати все це як рядок, тому використовували двокрапки:

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", але, розставляючи його імена префіксом користувача, ми миттєво знаємо, яку інформацію цей хеш повинен / міг мати.


5
Цікаво, чому :був обраний, коли .подібні речі в різних мовах здаються більш поширеними.
CivFan

3
Можливо, щоб точно відрізнятися від оператора точки, який використовується в більшості мов для доступу до об’єктів
Tobias P.

40

Двокрапки - це спосіб структурувати ключі. Вони не інтерпретуються реді ніяк. Ви також можете використовувати будь-який інший роздільник, який вам подобається, або взагалі жоден. Я особисто віддаю перевагу /, що робить мої ключі схожими на шляхи до файлової системи. Вони не впливають на продуктивність, але не слід робити їх надто довго, оскільки redis повинен зберігати всі клавіші в пам'яті.

Хороша структура ключів важлива для використання потужності команди sort, яка є відповідями 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'

Ви можете бачити, що структура ключів дозволяє SORT шукати кольори користувача, посилаючись на структуровані ключі.


1
Використання / - відмінна порада!
Саураб Хірані,

5
Пробуючи свої сили на Redis, я зрозумів, що такі інструменти інтерфейсу, як redis command ( github.com/joeferner/redis-commander ), демонструють кращу візуалізацію, коли ключі структуровані двокрапкою, а не косою рисою. Таким чином я проголосував за двокрапку за її історичне значення.
Паван Кумар,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.