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似乎没有任何效果。