gpt4 book ai didi

memcached - memcached 服务器重新启动后出现意外行为。如何配置/纠正它?

转载 作者:行者123 更新时间:2023-12-04 02:20:25 28 4
gpt4 key购买 nike

我有一个持久连接池(Memcached 客户端)。数据正在缓存在 memcached 服务器中。如果在重新启动 memcached 服务器后,我尝试使用客户端从池中获取缓存数据,则会出现以下异常:

java.util.concurrent.ExecutionException: java.lang.RuntimeException: Cancelled
at net.spy.memcached.MemcachedClient$OperationFuture.get(MemcachedClient.java:1662)
at net.spy.memcached.MemcachedClient$GetFuture.get(MemcachedClient.java:1708)
at com.eos.gds.cache.CacheClient.get(CacheClient.java:49)

当我尝试获取缓存数据时,我仅在重新启动后第一次收到此异常。我做了很多搜索。但是找不到确切的原因。

最佳答案

Spymemcached 有一堆内部队列,操作在实际发送到 memcached 之前就被放置在这些队列中。这里发生的事情是您执行一个操作,然后在通过线路发送该操作或从 memcached 收到响应之前,Spymemcached 意识到连接已丢失。因此,Spymemcached 会取消所有正在进行的操作,然后重新建立连接。

当您在 Future 上调用 get() 时,由于操作被 Spymemcached 取消,因此会引发异常。我建议在这里做的是捕获您使用 Spymemcached 执行的每个单独操作的所有异常,然后根据错误重试操作,只是忘记它。例如,如果它是一个 get 并且您的 memcached 服务器集群出现故障,那么您可能会忘记它,因为缓存将为空,但您可能想要重试一组。

关于memcached - memcached 服务器重新启动后出现意外行为。如何配置/纠正它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8063590/

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