Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法检查memcached是否已重新启动? 我用C++和C语言附加这个问题,因为项目中的两种语言都受到了影响。_C#_C++_Memcached - Fatal编程技术网

C# 有没有办法检查memcached是否已重新启动? 我用C++和C语言附加这个问题,因为项目中的两种语言都受到了影响。

C# 有没有办法检查memcached是否已重新启动? 我用C++和C语言附加这个问题,因为项目中的两种语言都受到了影响。,c#,c++,memcached,C#,C++,Memcached,情况: 上述语言中的模块通过memcached进行通信。它们与memcached一起运行了数月,没有任何问题 memcached正在另一台服务器上运行 出于性能原因,到memcached的连接始终保持打开状态,这意味着每个模块启动时都会连接到memcached并重新使用此连接,直到模块停止 现在,有一种非常罕见的情况,运行memcached的VM会重新启动—我无法控制它。 在这种情况下,我看到模块具有未定义的行为 我的问题: 有没有办法检测到memcached的实例由于重新启动而变得无效? 在这

情况:

  • 上述语言中的模块通过
    memcached
    进行通信。它们与
    memcached
    一起运行了数月,没有任何问题
  • memcached
    正在另一台服务器上运行
  • 出于性能原因,到
    memcached
    的连接始终保持打开状态,这意味着每个模块启动时都会连接到
    memcached
    并重新使用此连接,直到模块停止
  • 现在,有一种非常罕见的情况,运行
    memcached
    的VM会重新启动—我无法控制它。 在这种情况下,我看到模块具有未定义的行为

    我的问题:
    有没有办法检测到
    memcached
    的实例由于重新启动而变得无效?
    在这种情况下,我会重新连接


    另一点是:如果这不是一个好主意,那么这个检查应该与重新连接花费多少时间?每次需要时我都重新连接,然后在
    memcached
    服务器重新启动时避免任何问题。

    我想我找到了一个可能的解决方案-看起来比我想象的要容易:

    当模块启动时,将创建一个引用memcached键(例如
    hasmcachedbeenrestarted
    )。该值将设置为
    NO

    模块以线程的形式运行,它们被外部触发器唤醒。在这种情况下,他们读取这个memcached键,当它没有值
    NO
    时,很明显
    memcached
    已重新启动,然后重新连接

    由于我必须为每个线程唤醒一次,所以它不会对性能产生任何影响


    PS:在我的例子中,这并不是那么简单,因为有几百个线程,所以我必须向每个引用memcached键添加一个散列,以便每个线程可以检查情况


    否则,第一个线程将意识到
    memcached
    已重新启动,并将引用键再次设置为
    NO
    ,这将导致其他线程认为一切正常的情况,即使内部连接变得无效。

    确实是非常简单的方法,并且最终非常明显!