Предыстория: начал изучать Node.JS и Key-value-Store сначала с NStore, потом по совету консультанта перешел на LevelDB. Переход был правильным и обоснованным (библиотека NStore заброшенна, постоянные падения сервера). Но в LevelDB непонятки с репликацией, хотя она там и есть.
Теперь вызвался писать новый движок для Redis, используя библиотеку node_redis.
Раньше у меня было 2 store: ключи в обеих store одинаковые, а values разные - в первом JSON, во втором binary. Разделение нужно было из-за невозможности одноврменного хранения в LevelDB по одному ключу данных разным encoding. LevelUP предоставлял логичное API:
createReadStream - SELECT всех ключей/значений с условием/фильтрацией/сортировой/ограничением на кол-во записей.
put(key, value), где key - строка, value - JSON объект ну и db.get.
А после посмотра API байндингов для redis, у меня возник один большой вопрос: а как на этом всем уехать? Как реализовать аналогичный фунционал? Где хранить данные обеих store? В разных базах?
Почему, к примеру, в Redis нет
#.getall
Делается ли автоматическая (де)сериализация JSON данных? Где и как хранить бинарные данные по ключу из 2-го store? Эти данные берутся из файла. Можно ли перенаправить потоки? Если да, то как?
Зы. Или может redis тут тупо не подходит? А что тогда есть с нормально реализованной master-slave репликацией, которая уже может применяться в продакшене?