LINUX.ORG.RU

Релиз Microcached 1.0

 microcached,


1

4

Microcached — маленький и эффективный кэш-демон.

Здравствуйте, после многих лет работы с Memcached, я подумал, что было бы неплохо иметь под рукой похожий инструмент, который был бы таким же простым и удобным, и который давал бы возможность выполнять поиск среди ключей на стороне сервера, используя регулярные выражения. Мне всегда казалось, что выполнять мультизапрос на получение всех ключей и обрабатывать огромный массив этих ключей на стороне PHP — не самый лучший способ получить нужные данные.

Целью было создать быстрый кэш сервер, простой и удобный, как молоток.

Хочу представить сообществу продукт своего труда — маленький и эффективный кэш-демон Microcached 1.0.

Среди поддерживаемых платформ на данный момент только операционные системы на базе ядра Linux.

Основные возможности демона:

  • Маленький и эффективный, написан исключительно на Си, используется механизм опроса файловых дескрипторов Linux epoll API;
  • возможность работать с кэш-записями размером до 4ГБ ОЗУ (суммарное ограничение для одной записи);
  • очень простой, такой же простой, как и Memcached;
  • позволяет выполнять запросы на фильтрацию/удаление ключей (и записей, ассоциированных с ними) за счет использования регулярных выражений PCRE;
  • предоставляет простой и понятный клиентский интерфейс, бинарный протокол общения между клиентом и сервером.

Лицензия MIT.

>>> Подробности



Проверено: Falcon-peregrinus ()
Последнее исправление: DeadEye (всего исправлений: 4)

memcached API был написан так, чтобы все его операции были выполнимы в O(1) время. Поиск ключей не вписывается, поэтому его нет.

Хороший проект, конечно, но отстутствие поиска по ключам скорее плюс для меня - меньше шансов девелоперам использовать кэш для чего-то ужасного

voronaam ★★
()
Ответ на: комментарий от voronaam

Вообще, мне нравится описание команды keys у redis, использование таких вещей как grep строго противопоказано в повседневной жизни. Но иногда ведь хочется.

excanoe
() автор топика
Ответ на: комментарий от mersinvald

Я ближе к началу выкладывал общую информацию о производительности :) По скорости приблизительно как redis. Но я считаю, что синтетика имеет мало общего с реальностью.

excanoe
() автор топика
Ответ на: комментарий от excanoe

Вообще, я думал что будет максимум 10 комментариев.

Вообще, народ просто от скуки перебрёхивается в ожидании когда Царь представит анализ производительности когда демона.

anonymous
()
Ответ на: комментарий от excanoe

Самый простой ответ, потому что мне так удобно.

Ты противоречишь сам себе. Говоришь что хочешь поделиться с другими, а банально необходимых для этого действий не делаешь. Выкладывае проекта «на об%%ись» на маргинальный хостинг, под маргинальной VCS, без трекера и pull request'ов, с твоей стороны, неуважение к польнователям, а со стороны пользователей - риски завязаться на неподдерживаемое ПО автору которого на пользователей плевать.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Я не только сказал, что хочу поделиться с другими, я поделился :) И как я уже сказал, обсуждение выбора платформы для распостранения, это путь в никуда. Если честно, я удивлен, что с такой логикой мышления, я не увидел ни одного вопроса, почему проект я написал на Си, а не скажем на Go или Rust. Ну или Java.

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

Но вброс годный.

excanoe
() автор топика
Ответ на: комментарий от slovazap

Кстати, в принципе, сам факт того, что я поддерживаю только linux, с вашей точки зрения, вполне можно расценивать как неуважение к пользователям всех остальных ОС.

Но является ли это действительно неуважением?

Мне даже по-человечески как-то неловко стало, поделился не так, выложил не так, скобочки поставил не так, cvs выбрал не ту.

Вообще, я хорошо понимаю на каком сайте я нахожусь :)

Так или иначе, реальные отзывы о реальных косяках я только приветствую.

Ибо два с половиной лоровца, которым возможно пригодится мой маленький демон, не должны быть брошены на произвол судьбы.

excanoe
() автор топика
Ответ на: комментарий от excanoe

У редиса есть неблокирующий SCAN. Быстрее KEYS он от этого не становится, но зато overall performance не страдает.
Более того, SCAN позволяет сочетать glob patterns на сервере с регулярками на клиенте. А ежели хватает lua-вского pattern-matching'а, то можно и на стороне сервера сразу фильтровать скриптом, дабы лишний трафик не гонять.

iSage ★★★★
()
Ответ на: комментарий от Manhunt

А почему не libevent?

тогда уж libev. libevent монстр с наркоманским API. Чего только стоит один God-struct для всех типов эвентов.

h4tr3d ★★★★★
()
Ответ на: комментарий от DELIRIUM

на винде есть select, какие-то евенты и IOCP. Из этого первые два наиболее неэффективные. Из-за архитектурных особенностей, libev использует select на Windows, а libuv - IOCP (по сути, libuv это Boost.Asio для Си). Но из-за такого распределения, libev оказывается эффективнее на *nix, а libuv - на винде (ровно как и Asio: им приходится на *nix эмулировать проактор на реакторе, как следствие - подолнительные накладные расходы).

h4tr3d ★★★★★
()
Ответ на: комментарий от zyoung

4Gb какое-то странное ограничение

Вот и выросло поколение...

anonymous
()
Ответ на: комментарий от zyoung

int

4Gb какое-то странное ограничение

32-bit int жеж. Ваш К.О. Не благодари!

mumpster ★★★★★
()
Ответ на: комментарий от excanoe

реализую отдельную версию с sqlite и тегами

это 5! )))) кастую ещё туда домино с комсомолками! ))))

PS: про прогу ничего плохого сказать не могу, но тут по ходу коллега Xintrea и некоторые другие недопонимают чокаво...)))

mumpster ★★★★★
()
Ответ на: комментарий от Deleted

100500

Чем хуже-то?

это из разряда:

«армяне лучше чем грузины» «чем лучше?» «чем грузины!»

и

«этот спорт-кар разгоняется в 100500 раз лучше чем этот ваш унылый амногрузовик=>этот грузовик в 100500 раз хуже чем этот спорт-кар»

mumpster ★★★★★
()
Последнее исправление: mumpster (всего исправлений: 1)
Ответ на: комментарий от Manhunt

Но где же твои бенчмарки?

«ой, всё!»

давайте не будем тёплое с мягким сравнивать.

а тут почти по анекдоту «а кто сильнее - слон или кит?»

mumpster ★★★★★
()
Последнее исправление: mumpster (всего исправлений: 1)
Ответ на: комментарий от voronaam

Хороший проект, конечно, но отстутствие поиска по ключам скорее плюс для меня - меньше шансов девелоперам использовать кэш для чего-то ужасного

Я вам аплодирую.

abbath ★★
()

github & git потому что это дефакто стандарт для opensource нынче. Это пользуют практически все и это чертовски удобно, особенно для проектов которые приглашают к совместной разработке. Судя по вашим словам, проект исключительно любительский и не требует внимания со стороны сообщества. Тогда конечно выбранная модель размещения и публикации верна.

P.S. Обожаю исходники в овер 2k строк.

abbath ★★
()
Ответ на: комментарий от reprimand

те кто нас любят смотрят нам вслед

условно можно считать что солярка мертва для ширнармасс (ушла в нишевые решения в т.ч. «legacy applications support») - туда же куда и hi-end СХД.

mumpster ★★★★★
()
Ответ на: комментарий от slovazap

маргинальный хостинг, под маргинальной VCS

Толсто.

pawnhearts ★★★★★
()
Ответ на: комментарий от Deleted

Чем мускул, вестимо.

Странный вы народ. Слон любую виртуалку кладет плашмя своими запросами. Язык запросов у него наркоманский. Конфиги и система прав безумные. Не нужно все это.

AVL2 ★★★★★
()
Ответ на: комментарий от h4tr3d

(ровно как и Asio: им приходится на *nix эмулировать проактор на реакторе, как следствие - подолнительные накладные расходы).

ты про что?

anonymous
()
Ответ на: комментарий от AVL2

Слон любую виртуалку кладет плашмя своими запросами.

Слона настраивать надо. Обязательно надо, в отличие от мускля.

Язык запросов у него наркоманский.

А ничего, что он ближе к стандарту?

Конфиги и система прав безумные.

Не «безумные», а просто «не осилил».

Wizard_ ★★★★★
()
Ответ на: комментарий от andreymal

Ближе к началу темы метки/теги уже затрагивались, если будет интерес, будут и метки, уважаемый andreymal.

excanoe
() автор топика
Ответ на: комментарий от abbath

Конечно стандарт, даже на хабре недавно была статья, что опен сорс сейчас понимает каждый по разному.

Я прекрасно осознаю, что гитхаб нынче это мейнстрим, но к счастью, у себя дома я еще могу принимать решение сам, какую CVS использовать, и каким образом проводить политику дистрибуции.

Для меня, опен сорс это когда ты имеешь доступ к исходным кодам ПО и можешь делать все что душе вздумается (under the terms of the license).

И я это обеспечил, использовал либеральную лицензию.

Кстати как разработчик, я прекрасно осознаю, что велосипеды, это не всегда хорошо, но благо, у меня и на это есть своя точка зрения. Есть два типа людей, первый тип, который качает zend framework для того, чтобы создать single-page сайт, и второй тип, который создает один PHP файл. Я отношусь ко второму типу. Если людям удобно грепать миллионы ключей на PHP, так я же не против. Но я предоставил свой, немножко иной взгляд на эту проблему, а для меня это проблема.

Многие почему-то сразу возвели мой маленький демон как альтернативу редис, когда он совсем не является альтернативой, я думаю что каждый инструмент нужно использовать по назначению, и там где вам нужен редис, без всяких раздумий берите редис.

Microcached это очень маленький проект, мне как человеку и как автору, конечно неприятно выслушивать тонны грязи об неуважении к меньшинствам, вбросы троллей и прочее негодование, и я конечно же сделаю выводы о том, стоит ли здесь размещать какие-либо новости в будущем.

Мне даже вспомнилась фраза из одного очень хорошего кино: ты пришел просить что-то (дружбы), но ты это делаешь без должного уважения. Так и здесь, я пришел поделиться, но сделал это без должного уважения.

Но вот что я могу сказать сейчас: я приобрел нечто важное, несколько очень важных для меня отзывов, и что еще важнее, одного подписчика у моего аккаунта, и одного подписчика у моего репозитория, два человека проявили интерес, и я искренне надеюсь, что им пригодятся мои наработки.

excanoe
() автор топика
Ответ на: комментарий от excanoe

Чувак, не парься. Эти увольни просто завидуют..
Ты же не думал что в коментариях будут только заинтересованые? ;)

expelled ★★
()
Ответ на: комментарий от excanoe

Здесь так принято. Кидать говном в тех, кто что-то делает. Место такое. Не обращайте внимание.

anonymous
()
Ответ на: комментарий от excanoe

Ну во-первых мне не нужно было так усердно расписывать зачем вы это сделали. :) Я это итак прекрасно понимаю. У меня у самого есть малолетний проект подобного класса, так сказать «для себя» и мне ваша мотивация понятна. А во-вторых про open source и прочее. То, что вы там что-то обеспечили, это только для людей которым по каким-то причинам ооочень нужен ваш код. На тему гитхаба, это просто уважение к людям которых вы хотите привлечь в разработку (я понимаю, что это не про вас, я лишь говорю почему все остальные размещаются на гитхабе), чтобы им не пришлось ещё тратить время и на это: hg+patch+email. А если вам это не нужно, этой новости на портале вообще не должно быть. Вы же наверное догадываетесь сколько костылей и продуктов у среднего разработчика валяется «для себя», безмолвно. Они их просто пользуют и всё.

abbath ★★
()
Ответ на: комментарий от abbath

Я учту это, и из уважения к вам и вам подобным, новостей от меня больше не будет, все из уважения к ЛОРу.

excanoe
() автор топика
Ответ на: комментарий от anonymous

Паттерны. Реактор - это когда приходит извещение, мол, готово чтение или запись, далее следует реакция: прочитать данные, записать данные. Проактор - это когда ты говоришь, вот тебе буффер с данными, запиши его, а по окончании вызови колбек и скажи, сколько смог записать. Это если грубо. Дальше понятно?

h4tr3d ★★★★★
()
Ответ на: комментарий от AVL2

Слон любую виртуалку кладет плашмя своими запросами

Чааааво?!?! Ты действительно нвастолько руко>|<оп?!?!

Язык запросов у него наркоманский. Конфиги и система прав безумные. Не нужно все это.

AVL2 Ух! А я за руки твои волновался ... Отсутствие моска - не болнзнь, кыш атседа эмулятор недоделанный :-)

anonymous
()
Ответ на: комментарий от Wizard_

Слона настраивать надо. Обязательно надо, в отличие от мускля.

И это минус, серьезный минус перед мусклем.

А ничего, что он ближе к стандарту?

Совершенно верно. Ничего. Это не плохо, но и не хорошо.

Не «безумные», а просто «не осилил».

Я то осилил, но в век трехзвенок это абсолютно ненужный гемор. 99% это вообще не востребовано.

AVL2 ★★★★★
()
Ответ на: комментарий от Manhunt

Это самый правильный ответ. возможно, он не помогает другим лтветить на вопрос, почнму я должен курить это (вероятно)говно вместо того, чтобы освоить альтернативы, но это вопрос твой, а не автора.

AVL2 ★★★★★
()
Ответ на: комментарий от anonymous

На что люди только не пойдут, лишь бы не использовать Tarantool

Сделай мне value длиннее 1 мегабайта без ректальных утех с lua и суррогатными tuple-ами.

kawaii_neko ★★★★
()
Ответ на: комментарий от reprimand

Для большинства проектов достаточно мускул + редис.

Остальное можно выбрать в церкви, перед иконами заступников.

Зы

Недавно узрел утилиту uping, каковая поосит ради одной таблички mssql. Вот и ответ, как выбирать БД.

AVL2 ★★★★★
()

Сделать дескриптор неблокирующим можно чуть быстрее:

int on = 1;
ioctl(fd, FIONBIO, &on);

Ну и таймауты сетевые было бы полезно обрабатывать, а не ждать, пока TCP сессия отсохнет по пятиминутному (или больше?) таймауту.

kawaii_neko ★★★★
()
Ответ на: комментарий от AVL2

Слон любую виртуалку кладет плашмя своими запросами.

Каие параметры виртуалки, как она используется, и вследствие чего PostgreSQL её кладёт?

Язык запросов у него наркоманский.

SQL — наркоманский?

Конфиги и система прав безумные.

Если тебе не нужно, оставь по дефолту (или почти по дефолту).

Deleted
()
Ответ на: комментарий от excanoe

но к счастью, у себя дома я еще могу принимать решение сам, какую CVS использовать

21-й век... CVS...

Deleted
()
Ответ на: комментарий от AVL2

хм.

Дело в том, что я тут слышал много кулстори о переходе в сторону postgres, в т.ч. от крутых дядек с опытом. Якобы перформанс, репликация, надежность, бла-бла-бла...

А вот давеча понадобилось запилить отказоустойчивый кластер (хотелось кейс как минимум «2 БД на двух машинах - дергаю из розетки одну из них и приложение работает как ни в чем не бывало»), и что? Инфы о postgresql очень мало, всё сводится к юзанию сторонних средств, совершенно нетривиальных в настройке и установке, каждый со своими особенностями. Т.е. кластерность из коробки недоступна. Жить на чистой репликации - не вариант (и бессмысленно, лол).

Теперь я совсем в потерях. Приложение, над которым работаю достаточно большое, однако еще путь открыт к изменению выбора БД.

reprimand ★★★★★
()
Ответ на: комментарий от excanoe

Задача была простая - написать linux демон

ты справился с ней. но зачем об этом так громко кричать?

anonymous
()
Ответ на: комментарий от h4tr3d

Если не сложно, можно объяснить подробно для си с классами и наследованием или чистого си, для линукс, желательно реальный пример или отсыл.

tuk9
()
Ответ на: комментарий от reprimand

Ну во первых это само по себе глупость и блажъ. Сначала вы угробили сан и крей просто не покупая надежные решения, а выбирая дешевые дрова на час, а теперь пытаетесь из этих дров построить надедную систему тупо связывая их попарно-по трое и подпирая костылями.

Во вторых HA кластер в принципе строится на уровне виртуалки или вернее системы виртуализации, а никак не приложения.

В третьих, да, теория о делении любой системы на уровни абстракции с замыканием всей логики поведения, свойств и гарантий строго в границах своего уровня очень красива и на первый взгляд верна, как теория Дарвина, но ты немного опоздал с посещением этой церкви. Примерно на 20-30 лет.

И слон тоже безнадежно устарел. Нынче все по другому.

AVL2 ★★★★★
()
Последнее исправление: AVL2 (всего исправлений: 1)
Ответ на: комментарий от AVL2

Ну во первых это само по себе глупость и блажъ.

желать HA кластер?

Сначала вы угробили сан и крей просто не покупая надежные решения

сколько платят - так и делаю. Если нет в требованиях проекта - так и делаю. Хочу заметить, что так делает большинство

а теперь пытаетесь из этих дров построить надедную систему тупо связывая их попарно-по трое и подпирая костылями

я всего-лишь озвучил мысль как это предлагают немногочисленные статейки в интернете

Во вторых HA кластер в принципе строится на уровне виртуалки или вернее системы виртуализации, а никак не приложения.

HA кластер ЧЕГО? У меня уже и так сеть из машин (физических) с виртуалками, HA если для всего кроме БД.

В третьих, да, теория о делении любой системы на уровни абстракции с замыканием всей логики поведения, свойств и гарантий строго в границах своего уровня очень красива и на первый взгляд верна, как теория Дарвина, но ты немного опоздал с посещением этой церкви. Примерно на 20-30 лет.

вот с этим можно подробнее? я не очень понял...

Нынче все по другому.

я как раз пытаюсь узнать как. Расскажи, пожалуйста

reprimand ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.