2016-10-10 5 views
0

Я пытаюсь реализовать базовый сервер redis в java. Но я не уверен, что структуры данных Я должен использовать для реализации своей базы данных. Сначала я думал, что достаточно простого HashMap, так как он может хранить значения <Object, Object>, и я мог бы реализовать команды GET и SET. Но когда я углубился, я мог найти команды вроде GETBIT, SETBIT, ZADD и т. Д., Для которых требуется более сложная структура данных для базы данных.Реализация Redis в java

Я думаю, что я должен использовать HashMap со столбцом значения типа ConcurrentSkipListMap. Я прав? Пожалуйста помоги.

А также, следует ли хранить значения String команды Set после преобразования его в его двоичное значение?

ответ

0

Реализация полномасштабной Java клон redis (или даже клиент redis) не является простой задачей и, безусловно, не вписывается в так ответить.

Хорошей новостью является то, что вам не нужно: есть номер redis Java clients, который вы можете использовать. Кроме того, вы можете изучить код любого из этих клиентов и получить представление о том, что вам нужно, чтобы реализовать его самостоятельно.

+0

Мне просто нужно знать, какие структуры данных используются в redis sever. –

+0

Первый результат Google для структур данных redis * даст вам [список всех структур данных в redis] (http://redis.io/topics/data-types-intro). Однако, как вы решите реализовать их в Java, зависит от вас. – asherbar

+0

Я имею в виду, в каком формате данных данные будут храниться в файле rdb, а также в состоянии внутренней памяти. –

0

Проект redis-protocol имеет

netty4-сервера/ Очень высокая производительность в-JVM REDIS памяти сервера клона

, которые могут оказаться полезными в качестве ссылки. Похоже, что автор в основном сохраняет структуры данных в каталоге util; это то, что вы хотите посмотреть.

Эти структуры данных, конечно, являются только версиями в памяти, но для простой реализации непрерывности вы можете начать с сериализации всех ваших структур в памяти в файл, если вы не хотите, чтобы файл был доступен для чтения реальным Redis , формат сериализации не должен иметь значения.

Смежные вопросы