gpt4 book ai didi

.net - 防止与 memcached 的连接过多(Enyim 客户端)

转载 作者:行者123 更新时间:2023-12-04 15:37:00 25 4
gpt4 key购买 nike

鉴于常见问题解答报价,我正在寻找有关处理打开 memcached 连接的有效解决方案的建议:

Remember nothing is stopping you from accidentally connecting many times. If you instantiate a memcached client object as part of the object you're trying to store, don't be surprised when 1,000 objects in one request create 1,000 parallel connections. Look carefully for bugs like this before hopping on the list.



另见: Initializing a Memcached ClientManaging Connection Objects .

我考虑在我们的缓存程序集中使用单例来提供 memcached 客户端,但我确信必须有更好的方法,因为锁会引入(不需要的?)开销。

我很清楚客户端的使用模式,我不清楚的是如何在可扩展性和性能方面有效地使用客户端。其他人如何处理使用 memcached 客户端?

里面有50个赏金给你。

最佳答案

我们有一个与 redis 客户端类似的场景,最初我们的解决方案是拥有一个通用的单个实例,我们通过 lock 同步访问。 .这很好,但是为了避免延迟和阻塞,我们最终编写了一个线程安全的流水线客户端,它允许并发使用而没有任何阻塞。我对男性疼痛协议(protocol)知之甚少,但我想知道类似的东西是否适用于此。如果您可以稍等片刻,我实际上很想尝试调查是否可以将其添加到 BookSleeve(我们的自定义 OSS redis 客户端)。

但是我们通常能够仅仅使用一个同步的共享实例来跟上进度(与单例几乎相同,这取决于您的纯粹性)。

扫视the FAQ ,管道确实是一种可能;我完全愿意在 booksleeve 中编写异步/流水线 memcached 客户端的选项。 .大多数原始 IO/多路复用在 redis 中很常见。您可以考虑的其他技巧是尽可能使用 get_multi 等而不是单独获取 - 不过,我不知道您当前的客户端是否支持这一点(IK 还没有查看)。

但是:我不知道它如何将 memcached 与 redis 进行对比,但在我们的例子中,切换到流水线/多路复用 API 意味着我们不需要使用太多池(许多连接)——单个连接(正确流水线)是有能力的从单个节点支持大量并发使用。

关于.net - 防止与 memcached 的连接过多(Enyim 客户端),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5822067/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com