Я хотел бы поделиться некоторыми вещами, которые мы узнали, используя Redis в качестве основной базы данных в нашем сервисе на базе DST Platform. Мы выбрали Redis, потому что у нас были данные, которые нельзя было разделить на разделы. Мы хотели добиться максимальной производительности от одного сервера
Плюсы:
— Redis был непревзойденным по производительности. Мы получали 10 000 транзакций в секунду «из коробки» (обратите внимание, что одна транзакция включала в себя несколько команд Redis). После нескольких оптимизаций и использования скриптов LUA мы смогли достичь скорости 25 000+ транзакций в секунду. Таким образом, когда дело касается производительности на один сервер, Redis не имеет себе равных.
— Redis очень прост в настройке и имеет очень небольшую кривую обучения по сравнению с другими хранилищами данных SQL и NoSQL.
Минусы:
— Redis поддерживает лишь несколько примитивных структур данных, таких как хэши, множества, списки и т. д., а также операции с этими структурами данных. Этого более чем достаточно, если вы используете Redis в качестве кэша, но если вы хотите использовать Redis в качестве полноценного хранилища данных, вы будете ограничены в возможностях. Нам было сложно моделировать наши требования к данным с помощью этих простых типов.
— Самая большая проблема, с которой мы столкнулись при работе с Redis, — это отсутствие гибкости. Как только вы определяете структуру своих данных, любые изменения в требованиях к хранилищу или шаблонах доступа практически требуют переосмысления всего решения. Не уверен, что это относится ко всем хранилищам данных NoSQL (я слышал, что MongoDB более гибкая, но сам её не использовал).
— Поскольку Redis работает в однопоточном режиме, загрузка процессора очень низкая. Вы не можете разместить несколько экземпляров Redis на одном компьютере, чтобы повысить загрузку процессора, так как они будут конкурировать за один и тот же диск, что приведёт к его перегрузке.
— Отсутствие горизонтальной масштабируемости — это проблема, о которой упоминалось в других ответах.