【发布时间】:2020-01-22 13:54:35
【问题描述】:
我是 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 语句)。 问候。
【问题讨论】:
标签: c++ templates redis refactoring hiredis