问题标签 [hiredis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
4926 浏览

database - 2节点Redis HA

我有两个节点,我想在主动-主动模式下作为服务器运行,并且还具有 HA 功能,即如果一个节点关闭,另一个节点应该开始接收所有请求,但是当两个节点都启动时,两个节点都应该接收所有请求。现在,由于 Redis 不允许相同哈希集的主动-主动模式,而且我没有运行 Sentinel 的选项,因为我不能有第三个节点,我的想法是在复制中运行这两个节点,我自己决定是否主节点已关闭并将从属节点提升为主节点。这有什么问题吗?当原来的master回来时,有没有办法将它配置为slave?

这听起来是个好主意吗?我对 Redis 以外的建议持开放态度。

0 投票
1 回答
164 浏览

c++ - 如果 key 定义为 std::string,则存储在 redis 中的 pod 结构的反序列化失败

在 redis 中存储 POD 结构可以正常工作,const char *但不std::string涉及。

常量字符 * 示例

如果我替换这些行:

执行总是以Segmentation fault结束。

我自己无法解决这个问题,我非常感谢任何帮助。

0 投票
2 回答
500 浏览

c++ - 未加载 Hiredis 库/未找到图像

我正在使用使用hiredis的cmake开发一个c++项目。CMake 和编译过程没有给出任何错误。但是,当我尝试执行我的项目时(从终端或我正在使用 [CLion] 的 IDE,我收到以下错误:

dyld:库未加载:libhiredis.0.13.dylib

引用自:/Users/connorriley/CLionProjects/DispatchingOptimization/bin/dispatch 原因:找不到图像

我不确定为什么要寻找我的项目,libhiredis.0.13.dylib因为我拥有的唯一hiredis库文件是libhiredis.dylib.

我的项目文件结构如下:

附加信息:

  • 编译器:clang
  • 操作系统:macOS 10.12.3
  • cmake 版本 3.7.2
0 投票
2 回答
683 浏览

redis - HiRedis:: 如何使用 LPUSH 在 Redis 列表中插入空白字符串

我正在使用hiredis库的redisCommand来做这样的事情:

其中“”表示我想在列表中插入空元素。当我从 redis 上的命令行执行此操作时,它工作正常,但是当我将其作为命令传递给hiredis 时,它不起作用并且元素最终是“”而不是空的。有什么解决办法吗?

这是我调用 redisCommand 的方式:

我也试过放单引号、反斜杠等

0 投票
1 回答
756 浏览

redis - 如何使用redis和gearman进行持久化

如何将 Gearman 与 redis 一起用于持久队列?

我正在尝试为 centos7 运行它。我让 Gearman 工作。正在运行

我可以看到对 libsqlite3、Postgres、libtokyocabinet 和 MySQL 的支持。

我已经根据各种论坛使用 yum 安装了hiredis,尽管我不知道如何通过终端运行它。我为 gearman 下载了 tar 文件,并尝试在 gearman 文件夹中运行此命令,但无济于事。

0 投票
1 回答
1103 浏览

c++ - 在 Redis 中存储字符向量 - 包含 NUL

我想将 JPEG 图像作为单个键值对存储在 redis 中。从 OpenCV,我得到一个std::vector<unsigned char> jpeg来自imencode()

现在我用 Hiredis将此向量转换为std::string和它。SET问题是jpeg向量包含NUL字符 ( ANSII == 0) 并且 HiredisSET函数接收value.c_str().c_str()在第一次出现 后截断字符串NUL,因此只有这个子字符串存储在数据库中。

我的问题是:我怎样才能SET和Hiredis 一起GETstd::vector<unsigned char>包含)?NUL(最小化运行时间至关重要。)

这是我的代码:

0 投票
1 回答
1019 浏览

javascript - 无法在 Windows 10 x64 上安装hiredis@0.5.0

我正在尝试hiredis在 Windows 64 位系统上安装,因为node-celery软件包需要它。

系统正在运行

  • 节点 v7.9.0
  • npm v4.5.0
  • 带有更新 5 的 Visual Studio 社区 2013 ( en_visual_studio_community_2013_with_update_5_x86_6816332)
  • Windows 10(64 位)

跑步

给出以下构建错误。

如何安装v120 build tools错误消息中的说明?

0 投票
1 回答
447 浏览

asynchronous - redisAsyncContext 中的 ev

在 redisAsyncContext 中,stuct ev 被定义为:

有一个功能:

这个怎么运作?我什么时候应该使用ev?

0 投票
1 回答
484 浏览

asynchronous - 在 Hiredis 异步上下文上设置 TCP 保活间隔

我正在围绕hiredis编写一个包装器,以便在redis节点出现故障时启用重新连接的发布/订阅功能。

我正在使用异步 redis API。

所以我有一个测试工具来设置发布者和订阅者。然后,该线束关闭订阅者正在读取的从属 VM。

但是,断开回调直到很久以后才被调用(当我破坏包含相应 redisAsyncContext 的 Subscription 对象时)

我认为解决此问题的方法可能是使用 tcp keepalive。

于是我发现net.h中有一个合适的redis函数:

int redisKeepAlive (redisContext* c, int interval);

但是,以下内容似乎表明库中故意省略了 redisKeepAlive 函数:

当然,当我尝试使用该调用时,链接器会抱怨:

我运气不好 - 有没有办法在 Hiredis 异步上下文上设置 TCP keepalive 间隔?

更新 我发现了这个:

但是在 asyncContext->c 上设置它并调整 REDIS_KEEPALIVE_INTERVAL 似乎没有效果。

0 投票
1 回答
411 浏览

c++ - 如何在 Redis 上使用 List 使用hiredis 使用 C++ 开发

我尝试在 C++ 的 Linux 上将 list 与 redis 一起使用,如何在 C++ 上使用“rpush”、“lpush”、“rpop”、“lpop”?我是这样写的:

但它没有成功,“this->_reply->str”说“WRONGTYPE 对持有错误值的键的操作”

我该如何使用这些方法?谢谢