Пакет сообщений с 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;)