Nano Hash - криптовалюты, майнинг, программирование

Для чего нужны двоеточия в ключах 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

У них не было особых характеристик обработки или производительности в Redis, единственная цель заключалась в создании пространства имён для данных, чтобы найти их снова. В настоящее время вы можете использовать хэши для хранения большинства ключей с двоеточиями:

 HSET user:bob email [email protected]
 HSET user:bob age 31

Вам не нужно называть хэш «user: bob», мы могли бы назвать его «bob», но, назначив ему пространство имен с помощью префикса user-prefix, мы сразу узнаем, какую информацию этот хеш должен / мог бы содержать.

24.08.2010
  • Интересно, почему был выбран :, когда . кажется более распространенным на разных языках для такого рода вещей. 09.09.2015
  • Возможно, он будет полностью отличаться от оператора точки, который используется в большинстве языков для доступа к объектам. 09.09.2015

  • 2

    Двоеточие - это способ структурирования ключей. Redis никак не интерпретирует их. Вы также можете использовать любой другой разделитель, который вам нравится, или вообще не использовать. Я лично предпочитаю /, из-за чего мои ключи выглядят как пути файловой системы. Они не влияют на производительность, но вы не должны делать их слишком длинными, поскольку 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 искать цвета пользователя, ссылаясь на структурированные ключи.

    25.08.2010
  • Использование / - отличное предложение! 01.05.2015
  • Пробуя свои силы в Redis, я понял, что инструменты пользовательского интерфейса, такие как redis commander (github.com/joeferner/redis-commander) показывает лучшую визуализацию, когда ключи структурированы двоеточием, а не косой чертой. Таким образом, я голосую за двоеточие из-за его исторического значения. 07.03.2019
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..