主要针对使用redis的同步api。

redis的同步api,代价非常昂贵

redis的同步api,每一次调用都是相当于一次网络通信,而且时阻塞的,如果赶上网络波动或者redis正在保存数据,会占用很多时间的。

void *redisvCommand(redisContext *c, const char *format, va_list ap)
{
    send request...
    recv result...
    return ...;
}

2 适应情景分析

我们使用时,有很多类似下面的操作

val1 = redis.command("get key1");
if(val1 > 10)
    redis.command("set val1 100");
else
    redis.command("set val1 0");

简单地说,就是多次redis api调用,后面的操作以来于前面的执行结果

3 使用lua脚本优化

redis server支持lua脚本,使用时相当于客户端把一小段lua脚本发到redis server执行,这个lua脚本可能会有多次操作。

但是网络通信只有一次,redis server执行完lua脚本把结果返回给客户端,减少网络交互次数。