1
我正在爲hiredis編寫一個包裝,以便在redis節點關閉時啓用與重新連接的發佈/訂閱功能。在Hiredis異步上下文中設置TCP存活時間間隔
我正在使用異步redis API。
因此,我有一個測試工具,可以設置發佈者和訂閱者。然後,線束關閉用戶正在讀取的從VM。
不過,斷開回調不叫,直到很久以後(當我破壞包含對應redisAsyncContext認購對象。
我認爲,要解決這個可能是使用TCP存活。
所以,我發現,有一個在net.h合適redis的功能:
INT redisKeepAlive(redisContext * C,INT間隔);
然而,以下似乎表明REDI sKeepAlive功能已經從庫中故意省略:
$ nm libhiredis.a --demangle | grep redisKeepAlive
0000000000000030 T redisKeepAlive
U redisKeepAlive
$ nm libhiredis.a -u --demangle | grep redisKeepAlive
U redisKeepAlive
當然,當我嘗試使用電話,鏈接器抱怨:
Subscription.cpp:167: undefined reference to `redisKeepAlive(redisContext*, int)'
collect2: error: ld returned 1 exit status
難道我的運氣 - 有沒有一種方法來設置Hiredis異步上下文中的TCP保持活動時間間隔?
更新 我發現這一點:
int redisEnableKeepAlive(redisContext *c);
但在asyncContext-> C設定此調整REDIS_KEEPALIVE_INTERVAL似乎沒有任何效果。