memdata: складируем :)

В одном из проектов потребовалось хранить данные о пользователях и иметь к ним быстрый доступ… Базы данных не прокатывают из-за своей медлительности. Memcache подходит, но для данной задачи ему не хватает одного функционала, — возможности группировать ключи и выбирать сразу группу ключей. Например, у нас есть ключи key1.key11, key1.key12, key2.key21, должна быть возможность сделать запрос /get key1. и получить в ответ значения key1.key11 и key1.key12.

В результате был написан демон memdata… Коротко о функционале:

устанавливаем значения для двух ключей:

/set 123|key1.key12.key123=value1|key1.key13.key133=value2|

получаем два ключа одним запросом:

/get 123|key1.key12.key123|key1.key13.key133|

в ответ получаем:

OK key1.key12.key123=value1|key1.key13.key133=value2|

другой способ:

/get 123|key1.|

в ответ получаем:

OK key1.key12.key123=value1|key1.key13.key133=value2|

а вот так:

/get 123|key3|

получим:

NF

т.е. данные не найдены…

Есть ещё одна полезная команда кроме get и set:

/flush

этой командой все данные сбрасываются в текстовый файл, который хранится по-умолчанию в memdata/data/storage/data.dmp, а при последующем запуске программы, данные из этого файла загружаются в память… Если в конфиге есть: worker.is_flush_on_stop = 1, то, при остановке демона (killall memdata), данные так же сбрасываются в этот файл.

Что-то лень писать… Будет интерес, напишу подробнее…

ЗЫ: да, как всегда используются libevent и, полюбившиеся мне, JudyArray.

Взять всё это добро можно тут: memdata-0.0.1.tgz

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Tags: , ,

Ответь!

CAPTCHA image

можно использовать: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>