memcached客户端:打开,关闭和重用连接

Osc*_*car 10 memcached spymemcached

我一直在测试spymemcached和xmemcached客户端.我一直试图在项目文档中找到答案,但它很差.

我的问题是关于打开,关闭和重用连接.我在一份文件中找到了这个:

客户端可以在不再需要它的任何时刻关闭连接.但请注意,鼓励客户端缓存其连接,而不是每次需要存储或检索数据时重新打开它们.缓存连接将消除与建立TCP连接相关的开销".

Spymemcached不提供连接池,所以每次创建MemcachedClient实例时我都在创建一个新连接吗?然后什么时候应该关闭连接?我应该为我的应用程序中的所有线程提供相同的实例,还是每次都创建一个新的线程?

xmemcached确实有一个连接池.在这种情况下,我应该关闭从池中获得的连接吗?

mik*_*ied 8

Spymemcached不提供连接池,所以每次创建MemcachedClient实例时我都在创建一个新连接吗?

是的,每次创建新的MemcachedClient对象时,都会创建一个新连接.每个连接对应用程序来说都是异步的,因此即使有一个连接也可能足以满足您的应用程序.但是有些人会建立MemcachedClients的连接池.

然后什么时候应该关闭连接?

一旦不再需要与memcached通信,就会立即关闭连接.如果应用程序是短暂的,则需要关闭连接以使jvm停止,因为默认情况下MemcachedClient连接是守护程序连接.

我应该为我的应用程序中的所有线程提供相同的实例,还是每次都创建一个新的线程?

与多个线程使用相同的连接.由于创建TCP连接的开销,为每个调用创建新连接将导致性能显着下降.

xmemcached确实有一个连接池.在这种情况下,我应该关闭从池中获得的连接吗?

我不熟悉xmemcached,但我想你只想创建一些(16个)线程并与你的应用程序线程共享它们以获得最佳性能.