Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Кеширование на отдельном сервере с использованием тегов (https://javascript.ru/forum/server/23351-keshirovanie-na-otdelnom-servere-s-ispolzovaniem-tegov.html)

greatilya 21.11.2011 10:01

Кеширование на отдельном сервере с использованием тегов
 
Добрый день!

Хотел бы сделать кеширование на отдельном сервере.
Memcache не подходит т.к. он использует только оперативу, что пока достаточно дороговато. Как вариант memcacheDB, он использует хранение информации в файловой системе и ускоряет операции за счет использования оперативы, также он отлично масштабируется. Вот только у memcacheDB, как и у memcache нет возможности привязки тегов к записям.

Иными словами нужна возможность задать кеш вида:
set(key,value,array(tag1,tag2,tag3...,tagN))
считать:
get(key)
очистить по тегу:
clear(tag1)

Ну и естественно, поскольку кеширование на отдельном сервере, критична скорость работы.

Есть какие-то аналоги memcacheDB с возможностью использования тегов?

UPD: Пока присматриваюсь к MongoDB, вероятно она мне подойдет.

x-yuri 24.11.2011 08:02

mongodb... это скорее альтернатива memcache + реляционная БД (кстати, не работает c openvz, если что). А для memcache можно самому теги реализовать (например, рассказано в этом видео, на 38-ой минуте) или воспользоваться готовыми реализациями (в этой статье, описана реализация Котерова и комментарии можно почитать, в zf что-то должно быть и есть еще memcache-tags)

VKS 02.12.2011 18:03

http://code.google.com/p/memcached-tag/

B~Vladi 09.12.2011 11:28

Цитата:

Сообщение от greatilya
Как вариант memcacheDB, он использует хранение информации в файловой системе и ускоряет операции за счет использования оперативы

MongoDB тоже хранит кеш в оперативе. Причем может хранить только в RAM, вот пример настройки.

greatilya 14.02.2012 14:31

x-yuri,
спасибо за видео, оно супер, много полезной информации.
Если есть возможность, скоординируйте меня. Я на "чистый" ubuntu поставил Berkeley DB, libevent, memcachedb. И теперь ищу по интернету и не могу понять один момент: как ограничить доступ к мемкешу? Получается что любой желающий теперь может обращаться к мемкешу. В мемкеше как я понял никаких ограничений сделать нельзя... видимо нужно ставить еще что-то?

B~Vladi 14.02.2012 17:56

Цитата:

Сообщение от greatilya
В мемкеше как я понял никаких ограничений сделать нельзя...

Повесь его на localhost и всё.

greatilya 14.02.2012 18:58

B~Vladi,
он у меня на отдельном сервере, и обращение к нему соответственно идет по ip. Используется только для кеша.

B~Vladi 14.02.2012 19:10

Цитата:

Сообщение от greatilya
он у меня на отдельном сервере

Ну тогда вариантов много, но я не сисадмин, могу только сделать предположение.
Можно задать правило в iptables, что бы на ip/порт memcached-а могли обращаться только с нужного ip.

greatilya 14.02.2012 19:51

Цитата:

Сообщение от B~Vladi
могли обращаться только с нужного ip

Да тоже думал на этот счет, думаю iptables можно настроить так. Но думал авось есть другие варианты, т.к. дома у локального ПК динамический ip. На серверах то конечно у меня ip статичные и их я добавлю. Либо сделать для дома некий прокси, либо свой локальный тестовый мемкеш. Но если появятся идеи, буду рад :)

UPD: дело в том что не очень удобно добавлять ip адреса по мере докупки серверов ... еще пока покопаю идеи ...

B~Vladi 14.02.2012 21:54

Цитата:

Сообщение от greatilya
либо свой локальный тестовый мемкеш

Я так и сделал. Не нравится только что под винду древняя неофициальная сборка, но ничего не мешает поднять виртуалку.


Часовой пояс GMT +3, время: 22:01.