Пакет сообщений с Redis, где размер данных не велик

Redis - это хранилище структуры данных, но все же рекомендуется использовать пакет сообщений (или protobuf) для сериализации / десериализации данных. Я немного путаюсь с Messagepack поверх Redis, если порции данных, записанные в Redis, не очень велики.

Поскольку Messagepack потребуется упаковывать и распаковывать данные в соответствии со своим собственным протоколом, и наверняка он будет нести определенные расходы, а упакованные данные будут храниться только как "строковый" тип данных в Redis.

Чтобы использовать Redis в качестве сервера структуры данных, можно написать тонкий слой для чтения / записи непосредственно в / из структуры данных Redis, скажем, между C++ и Python, тогда где именно вписываются пакеты сообщений?

Может кто-нибудь пролить свет на пакет сообщений в контексте redis?

С Уважением,
Рахул

Отказ от ответственности - не оскорбляйте возможности Messagepack, я знаю, что это действительно круто:-)

1 ответ

Решение

Единого ответа нет, но я могу предложить несколько рекомендаций.

  • Основной тип данных Redis - это строка - она ​​безопасна в двоичном формате и может содержать до 0,5 ГБ (вероятно, больше в следующей версии).
  • Имена ключей являются строками, но вы обычно хотите: а) держать их короткими и б) они являются единственным способом доступа к вашим данным, который, мы надеемся, будет разборчивым и восстанавливаемым.
  • Значения могут быть строками. Если полезная нагрузка уже является строкой - не нужно сериализовать / десериализовать, просто сохраните как есть. Типичный пример: файлы jpg или png.
  • Если ваше приложение уже использует msgpack (или json, protobuff или...), вы можете сохранить сериализованную форму.
  • Redis 'Lua имеет встроенные библиотеки для работы с json и msgpack.
  • Есть модули (например, http://rejson.io/), которые могут расширить это.

Надеюсь, это поможет.

Отказ от ответственности: автор упомянутого модуля, Redis geek и имеет черный пояс, работающий с Lua Redis;)

Другие вопросы по тегам