cpp_redis的通信逻辑其实很简单,就是把指令拼接成一个字符串,然后通过TCP通信发送给服务端,服务端来负责解析这个字符串,并将返回结果以字符串返回。
cpp_redis的各种接口其实底层都是调用的这个send指令来完成的。如果你发现某个指令 cpp_redis没有实现,你就可以直接调用这个指令来自己拼接字符串指令。比如zadd:
void cpp_redis_connect(cpp_redis::redis_client& _client)
{
//! Enable logging
_client.connect("127.0.0.1", 6379, [](cpp_redis::redis_client&)
{
std::cout << "client disconnected (disconnection handler)" << std::endl;
});
}
cpp_redis::redis_client client;
cpp_redis_connect(client);
//zadd rank 11 baidu.com 8 jingdong.com 10 google.com.1
std::vector<std::string> my_command = {"zadd", "rank1", "11", "baidu.com", "8", "jingdong.com", "10", "google.com" };
client.send(my_command, [&](cpp_redis::reply& _reply)
{
std::cout << "zadd:finished!" << endl;
});
// synchronous commit 同步提交:将上面的所有get set 等方法依次执行完, no timeout
client.sync_commit();
真实的zadd指令: