【问题标题】:memcached client: opening, closing and reusing connectionsmemcached 客户端:打开、关闭和重用连接
【发布时间】:2011-12-30 19:20:48
【问题描述】:

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

我的问题是关于打开、关闭和重用连接。我在一个文档中找到了这个:

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

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

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

【问题讨论】:

    标签: memcached spymemcached


    【解决方案1】:

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

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

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

    当您不再需要与 memcached 通信时,您会立即关闭连接。如果您的应用程序寿命很短,您需要关闭连接以使 jvm 停止,因为 MemcachedClient 连接默认是守护程序连接。

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

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

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

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

    【讨论】:

    • 是否有任何基准可以让我看到应用程序中需要多少 Memcache 连接?
    • 最后一句话听起来不完整——你想说什么?
    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 2012-06-10
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 2013-08-10
    • 2013-08-13
    • 1970-01-01
    相关资源
    最近更新 更多