2012-05-21 3 views
9

API-интерфейс я использую, spymemcached, в основном даетКак пул соединений Memcached в Java (spymemcached)

MemcachedClient memc = new MemCachedClient(new InetSocketAddress("host", port)); 

Это действительно не дает мне connect() или isConnected() функцию. API предлагает DefaultConnectionFactory, но сначала посмотрите на код, который не похож на управляющий пул соединений. Кто-нибудь знает, как это сделать в spymemcached или в другой библиотеке memcached Java?

В целом - какой самый «моральный» способ сделать мое приложение устойчивым к потере связи?

ответ

14

Когда вы вызываете конструктор MemcachedClient, он автоматически подключается к вашему серверу memcached. Нет метода connect() или isConnected(). Если вы потеряете соединение с Spymemcached, он попытается снова подключиться к вам. Кроме того, DefaultConnectionFactory предназначен для указания специальных атрибутов соединения (например, метода хэширования и отказа). Если вы хотите использовать фабрику соединений, вам необходимо использовать конструктор MemcachedClient, который принимает ConnectionFactory и List<InetSocketAddress>.

Spymemcached использует один поток ввода-вывода, но действует как многопоточный клиент. Например, с одним потоком вы можете делать до 50 000 операций в секунду. Если вы хотите создать пул потоков, вам нужно будет сделать это в своем пользовательском приложении.

В целом - какой самый «моральный» способ сделать мое приложение устойчивым к потере связи?

Как я уже упоминал выше, Spymemcached попытается восстановить соединение, если он теряет соединение с сервером. Обычно этот процесс занимает около 17 мс. Однако большинство пользователей, использующих клиент, создают пул потоков в своем коде приложения.

+0

Все, что мне нужно знать. Я надеялся, что пересоединение было инкапсулировано. Спасибо много. – djechlin

0

Первоначально вы можете создать пул объектов. Затем во время выполнения набора, удаления или получения операции вы можете брать объекты из пула. MemcachedClient автоматически подключится к серверу после вызова его конструктора.

0

Некоторые люди используют DBCP для объединения соединений. Вы можете посмотреть на 3levelmemcache проект на github у него есть пул.

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