2012-05-21 13 views
9

La API que estoy usando, spymemcached, básicamente daCómo agrupación de conexiones memcached en Java (spymemcached)

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

En realidad, no me dan una función connect() o isConnected(). La API ofrece un DefaultConnectionFactory pero, al principio, al ver el código, no parece que gestione un grupo de conexiones. ¿Alguien sabe cómo hacer esto en spymemcached o en otra biblioteca de memcached de Java?

Más en general, ¿cuál es la forma más "moral" de hacer que mi aplicación sea tolerante a la pérdida de conexión?

Respuesta

14

Cuando llama al constructor MemcachedClient, se conecta automáticamente a su servidor memcached. No hay un método connect() o isConnected(). Si pierde la conexión con Spymemcached, intentará reconectarse por usted. Además, el DefaultConnectionFactory se utiliza para especificar atributos de conexión especiales (por ejemplo, método de hash y modo de falla). Si desea utilizar una fábrica de conexiones, debe utilizar el constructor MemcachedClient que toma ConnectionFactory y List<InetSocketAddress>.

Spymemcached usa una sola cadena de E/S, pero actúa como un cliente multiproceso. Con un hilo, por ejemplo, puedes hacer hasta 50k ops por segundo. Si desea crear un grupo de subprocesos, deberá hacerlo en su aplicación de usuario.

Más en general, ¿cuál es la forma más "moral" de hacer que mi aplicación sea tolerante a la pérdida de conexión?

Como mencioné anteriormente, Spymemcached intentará volver a conectar si pierde la conexión con el servidor. Este proceso generalmente tomará alrededor de 17 ms. Sin embargo, la mayoría de las personas que usan el cliente crean un grupo de subprocesos en su código de aplicación.

+0

Todo lo que necesitaba saber. Esperaba que la reconexión estuviera encapsulada. Muchas gracias. – djechlin

0

Puede crear inicialmente un grupo de objetos. Luego, mientras realiza un conjunto, elimina u obtiene operaciones, puede tomar prestados objetos del grupo. MemcachedClient se conectará automáticamente al servidor una vez que invoque su constructor.

0

Algunas personas usan DBCP para agrupar las conexiones. Puede consultar 3levelmemcache project at github tiene agrupación.

Cuestiones relacionadas