我一直在测试spymemcached和xmemcached客户端。我一直试图在项目文档中找到答案,但它很差。
我的问题是关于打开,关闭和重用连接。我在一份文件中找到了这个:
客户端可能会在不再需要它的任何时刻关闭连接。注意, 但是,鼓励客户缓存他们的连接 而不是每次需要存储或检索数据时重新打开它们。缓存连接将消除与建立TCP连接相关的开销“。
Spymemcached没有提供连接池,所以每次创建MemcachedClient
实例时,我都在创建一个新连接吗?然后什么时候应该关闭连接?我应该为我的应用程序中的所有线程提供相同的实例,还是每次都创建一个新的线程?
xmemcached确实有一个连接池。在这种情况下,我应该关闭从池中获得的连接吗?
答案 0 :(得分:8)
Spymemcached没有提供连接池,所以每次创建
MemcachedClient
实例时,我都在创建一个新连接吗?
是的,每次创建新的MemcachedClient对象时,都会创建一个新连接。每个连接对应用程序来说都是异步的,因此即使有一个连接也可能足以满足您的应用程序。但是,有些人会建立MemcachedClients的连接池。
然后什么时候应该关闭连接?
一旦不再需要与memcached通信,就会立即关闭连接。如果你的应用程序是短暂的,你需要关闭连接以使jvm停止,因为默认情况下MemcachedClient连接是守护进程连接。
我应该为我的应用程序中的所有线程提供相同的实例,还是每次都创建一个新的?
对多个线程使用相同的连接。由于创建TCP连接的开销,为每个调用创建新连接将导致性能显着下降。
xmemcached确实有一个连接池。在这种情况下,我应该关闭从池中获得的连接吗?
我不熟悉xmemcached,但我想你只想创建几个(16个)线程并与你的应用程序线程共享它们以获得最佳性能。