2015-08-05 6 views
15

Я читал о Redis и RocksDB, я не получаю преимущества Redis о RocksBD.Redis vs RocksDB

Я знаю, что Redis - все в памяти, а RocksBD - в памяти и использует флэш-память. Если все данные вписываются в память, какой я должен выбрать? они имеют одинаковую производительность? Redis линейно масштабируется с количеством процессоров? Я думаю, что есть другие отличия, которые я не получаю.

У меня есть набор данных, который вписывается в память, и я собирался выбрать Redis, но кажется, что RocksDB предлагает мне то же самое, и если в один прекрасный день набор данных будет расти слишком много, мне не придется беспокоиться о памяти.

ответ

28

У них нет ничего общего. Вы пытаетесь сравнить яблоки и апельсины здесь.

Redis является удаленным хранилищем данных в памяти (аналогично memcached). Это сервер. Один экземпляр Redis очень эффективен, но полностью не масштабируется (в отношении ЦП). Кластер Redis является масштабируемым (в отношении ЦП).

RocksDB является встроенным ключ/хранилище значений (аналогично BerkeleyDB или более точно LevelDB). Это библиотека, поддерживающая многопоточность и постоянство, основанное на деревьях слияния с лог-структурой.

+2

Спасибо, я думаю, что это намного быстрее RocksDB, поскольку он встроен, а Redis больше используется, когда у вас может быть много приложений, и им нужно получить доступ к некоторой базе данных в памяти. Я не знал, что RocksDB является встроенным хранилищем ключей/значений. – Guille

+1

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

+1

Я имею в виду, что он работает только на локальном компьютере и локальном процессе. Это библиотека, а не сервер. –

12

В то время как ответ Дидье Специи правилен в его различии между двумя проектами, они являются связаны проектом под названием LedisDB. LedisDB - это слой абстракции, написанный в Go, который реализует большую часть Redis API поверх таких движков хранения, как RocksDB. Во многих случаях вы можете использовать одну и ту же клиентскую библиотеку Redis непосредственно с LedisDB, что делает ее почти заменой Redis в определенных ситуациях. Redis, очевидно, быстрее, но, как указывает OP в своем вопросе, основное преимущество использования RocksDB заключается в том, что ваш набор данных не ограничивается объемом доступной памяти. Я считаю, что это полезно не потому, что я обрабатываю супер большие наборы данных, а потому, что оперативная память стоит дорого, и вы можете получить больше средств от меньших виртуальных серверов.