Я новичок в 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 для каждого типа данных). С уважением.