- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 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 语句)。问候。
最佳答案
如果我理解正确,您只需要知道 value
的类型,就可以知道在编写回复时在 redisCommand
字符串中插入的类型。
如果您将这些类型限制为基本类型,请尝试在 value
上调用 to_string
以构建结果 std::string
了解更多信息https://en.cppreference.com/w/cpp/string/basic_string/to_string当然不要忘记包含!
类似这样的东西:
template<typename T>
string set(string key, T value)
{
std::string result(std::string("SET ") + to_string(key) + to_string(value));
reply = (redisReply*) redisCommand(c, result);
string replyStr = reply->str;
freeReplyObject(reply);
return replyStr;
}
编辑:另一个可行的解决方案是每次调用“set”时简单地转换变量,并将函数重写为string set(string key, string value)
。
关于c++ - 高效处理为redis(hiredis)的SET命令创建模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59861308/
我正在开发一个简单的应用程序,它使用 Redis 的官方 C 客户端hiredis 的异步方面。作为第一步,我尝试编译the github repo 中的示例程序。 .我正在使用在 Ubuntu 20
我正在使用hiredis C library连接到我的 redis 实例。我正在考虑更改我的 redis.conf 以启用 requirepass 选项。我知道对于 redisConnect() 我只
我正在尝试使用 hiredis 编写连接池。我面临的问题是,如果用户触发命令但没有从连接读取响应,我应该在放入连接池之前清除该连接的响应。 有没有办法检查: 是否有更多数据要读取?所以我可以做 red
我正在使用 hiredis C client library在异步上下文中与 Redis 交互。 在我的工作流程的某些点上,我必须对 Redis 进行同步调用,但我无法从 Redis 获得成功响应。
我正在尝试在断开连接时重新连接到 Redis 服务器。 我正在使用 redisAsyncConnect 并且我已经设置了断开连接时的回调。在回调中,我尝试使用在程序开始时使用的相同命令重新连接以建立连
我正在使用 hiredis C 库连接到 redis 服务器。我不知道如何在订阅新消息后等待新消息。 我的代码如下: signal(SIGPIPE, SIG_IGN ); struct event
我正在为 Varnish 使用一个名为 libvmod-redis 的 redis 集成插件.我遇到一个问题,如果我收到大量并发请求(大约 350 个),redis 就会开始超时,最终我会在 Varn
我是 redis 新手。我想编写一个位于hiredis顶层的简单库(用于测试)。例如,为了实现 SET 命令,我编写了以下代码: #include #include #include #include
我正在尝试使用 hiredis 将结构SET 放入 Redis: struct StatLite { uid_t uid; gid_t gid; mode_t mode; }
我正在尝试在 CentOS 上以 C 运行 hiredis。 下面的代码似乎运行良好: ... const char *hostname = "my.redis-as-a-service.com";
我将 HiRedis 与 c/c++ 程序一起使用,并编写了一些测试来验证订阅是否有效(我的解决方案基于 this comment)。 但是,目前我只能通过在 redis-cli 终端中手动输入类似
reply = redisCommand(rcontext,"HGET %u %u",env->cr[3] ,KeyHandle); if(reply == NULL) { printf("in pr
如何使用 hiredis API 断开与 redis 服务器的连接?有 API 可以连接,但我找不到关闭连接的函数?redisFree 会自动执行此操作吗? 最佳答案 redisFree() 确实会关
我在多线程环境中使用 Redis,对它的运行方式有疑问。我在我的 c++ 应用程序中使用 hiredis c 库。 我的问题是:如果我在触发回调时使用异步模式,是否会在 Redis 客户端创建的另一个
我在 Kali Linux 2019.4 上使用以下命令安装了 Redis 服务器: $ redisurl="http://download.redis.io/redis-stable.tar.gz"
我想用 C 编译 redis 的客户端。我已经下载并安装了 libevent 库和 hiredis 文件。我用过这个命令: gcc -I/home/tasos/Dropbox/lists/hiredi
考虑以下示例: #include #include #include #include int main(int argc, char **argv) { redisContext *re
我有以下在 C 中使用 Redis 的代码。以 hiredis 为基础。 #include #include #include #include int main(int argc, char
我安装了redis服务器,可以从命令行使用它。现在,我想使用 hiredis 编写一个客户端程序。首先,我尝试编译 hiredis 目录中的 example.c: vishal@expmach:~/r
我正在尝试将一个多词字符串推送到一个 Redis 键但是每个词都被添加为一个新元素我怎样才能避免这种情况 #include #include #include #include int m
我是一名优秀的程序员,十分优秀!