Является ли "поле" обязательным в команде Redis Stream Xadd? - PullRequest
1 голос
/ 15 января 2020

Согласно документу Redis здесь , XADD имеет следующий формат:

XADD key ID field value [field value ...]

В моем случае формат и номер поля фиксированы. Интересно, я должен просто исключить «поле» в команде?

Взять пример:

Текущая команда:

XADD stream * timestamp [ts_value] msg [msg_value] uid [uid_value] status [status_value]  

Новая команда

XADD stream * [ts_value] [msg_value] [uid_value] [status_value]

В чем будет проблема или она будет плохой практиковаться, если я использую «новую команду», учитывая, что «поля» зафиксированы в моем случае использования?

1 Ответ

3 голосов
/ 15 января 2020

Это может сработать, но не будет интуитивно понятным для любого, кто пытается понять данные без предварительного знания - использование значения поля облегчает анализ данных. Это не только усложнит работу другого разработчика, но также, вероятно, приведет к путанице с любым видом стороннего приложения (например, Redis GUI).

Кроме того, ваш метод должен всегда иметь даже фиксированное количество полей.

Кроме того, любые будущие изменения в модели данных (да, на самом деле ничего не «исправлено») превратят это в кошмар. Вам придется либо создавать версии строк, либо переносить данные, или кто что знает.

Поэтому реальный вопрос заключается в том, почему кто-то хочет не использовать имена полей. Если вы прочтете документы, то обнаружите, что Redis сжимает имена, если они повторяются, поэтому с точки зрения пространства мало потерь. Единственная причина, по которой я могу придумать, это, возможно, оптимизировать количество трафика c, но я бы не стал go, если бы это не было реальной проблемой.

Несмотря на это, если вы одержимы не используя имена полей, вы можете использовать только одно и сериализовать все ваши «фиксированные» значения в него. Это будет более похоже на Redis, хотя у вас все равно будут проблемы, когда схема изменится:

XADD stream * data "[ts_value],[msg_value],[uid_value],[status_value]"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...