альтернатива memcached, которая может сохраняться на диске - PullRequest
49 голосов
/ 22 августа 2009

В настоящее время я использую memcached с моим java-приложением, и в целом он работает отлично.

Наиболее важными для меня являются особенности memcached:

  • это быстро, так как чтение и запись находятся в памяти и не касаются диска
  • это просто хранилище ключей / значений (так как это все, что нужно моему приложению)
  • распространяется
  • он эффективно использует память, поскольку каждый объект находится на одном сервере.
  • это не предполагает, что объекты взяты из базы данных (поскольку мои объекты не являются объектами базы данных)

Однако есть одна вещь, которую я хотел бы сделать, что memcached не может сделать. Я хочу периодически (возможно, один раз в день) сохранять содержимое кэша на диск. И я хочу иметь возможность восстановить кеш из сохраненного образа диска.

Сохранение диска не должно быть очень сложным. Если новый ключ / значение добавляется во время сохранения, мне все равно, включено оно в сохранение или нет. И если существующий ключ / значение изменяется во время сохранения, сохраненное значение должно быть либо старым, либо новым значением, но мне все равно, какое именно.

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

Ответы [ 15 ]

2 голосов
/ 27 августа 2009

А как же Терракота ?

1 голос
/ 12 декабря 2012

Просто чтобы завершить этот список - я только что нашел couchbase . Однако я еще не проверял это.

1 голос
/ 14 сентября 2009

Вы можете использовать GigaSpaces XAP , который является зрелым коммерческим продуктом, отвечающим вашим требованиям и многому другому. Это самая быстрая распределенная сетка данных в памяти (cache ++), она полностью распределена и поддерживает несколько стилей постоянных методов.

Гай Нирпаз, GigaSpaces

1 голос
/ 23 августа 2009

Мы используем OSCache . Я думаю, что он удовлетворяет почти все ваши потребности, за исключением периодического сохранения кеша на диск, но вы должны быть в состоянии создать 2 менеджера кеша (один на основе памяти и один на жестком диске) и периодически запускать java cronjob, который проходит через весь ключ кеша в памяти / пары значений и помещает их в кеш жесткого диска. Что хорошо в OSCache, так это то, что он очень прост в использовании.

1 голос
/ 23 августа 2009

Вы смотрели на BerkeleyDB ?

  • Быстрое встроенное управление данными в процессе.
  • Хранилище ключей / значений, нереляционное.
  • Постоянное хранилище.
  • Бесплатно, с открытым исходным кодом.

Однако он не соответствует одному из ваших критериев:

  • BDB поддерживает распределенную репликацию, но данные не разбиты на разделы. Каждый узел хранит полный набор данных.
...