10

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

我的问题是关于打开、关闭和重用连接。我在一份文件中发现了这一点:

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

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

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

4

1 回答 1

8

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

是的,每次创建新的 MemcachedClient 对象时,都会创建一个新连接。每个连接对应用程序来说都是异步的,因此即使只有一个连接也可能足以满足您的应用程序的需要。不过,有些人确实建立了 MemcachedClients 的连接池。

那我什么时候应该关闭连接?

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

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

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

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

我不熟悉 xmemcached,但我想您只想创建几个(也许 16 个)线程并与您的应用程序线程共享它们以获得最佳性能。

于 2011-12-31T19:34:50.480 回答