我对Redis还很陌生,我想编写一个简单的库(用于测试),它位于hiredis的顶层。 例如,为了实现SET命令,我编写了下面的代码:
#include<iostream>
#include<type_traits>
#include<hiredis.h>
#include<string>
using namespace std;
template<typename T>
string set(string key, T value)
{
/* set a key */
if(is_same<T, int>::value)
{
reply = (redisReply*) redisCommand(c, "SET %s %d", key, value) // c is redisContext*
}
else if(is_same<T, string>::value)
{
reply = (redisReply*) redisCommand(c, "SET %s %s", key, value)
}
// and so on for other data types ...
string replyStr = reply->str;
freeReplyObject(reply);
return replyStr;
}
有没有更好的解决方案来处理不同数据类型作为SET命令的值?(我的意思是避免对每种数据类型使用if语句)。 致敬。
set key value
保存的每个值都是字符串吗?我的意思是,如果我稍后使用Type key
命令,它是否总是返回这些SET命令的字符串类型? - Jafar Gh