问题标签 [redisjson]

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 投票
1 回答
1067 浏览

redis - 与在 redis-cli 客户端上运行的本机命令相比,为什么 EVALSHA 命令会带来如此高的性能成本?

以下是我针对 redis-benchmark 工具运行的一些测试和结果。

对于运行脚本的服务器端与运行脚本客户端的客户端相比,本应具有性能优势的东西的性能显着下降。

从客户端到EVALSHA= 34% 的性能损失

EVALSHAEVAL= 6% 的性能损失

非 JSON 插入set命令的结果相似

当我执行 info commandstat 并观察到该EVALSHA命令的性能较差时,我首先注意到了这一点

JSON.SETEVALSHA有大约 30% 的性能降低,这是我在直接测试中观察到的。

问题是,为什么?而且,这是否值得关注,或者这种观察是否在合理的预期范围内?

对于上下文,我使用EVALSHA而不是直接 JSON.SET 命令的原因有两个。

  1. IORedis 客户端库不直接支持使用 RedisJson。

  2. 由于前面的事实,我将不得不使用 send_command() ,然后它将直接命令发送到服务器,但在使用 TypeScript 时不能使用流水线。所以我不得不单独执行所有其他命令并放弃流水线。

  3. 我认为这应该是更好的表现?

****** 更新:

所以最后,根据下面的答案,我重构了我的代码,只包含 1EVALSHA用于写入,因为它使用了 2 个命令,即 set 和 expire 命令。同样,我不能将它单独放入 RedisJson,这就是原因。

这是供某人参考的代码:Shows evalsha and fallback

0 投票
1 回答
678 浏览

amazon-web-services - 在 AWS 上使用 HA 运行 Redis/Rejson 的最佳方式

由于 AWS 和 GCP 不为 Redis 的任何模块提供托管服务。我期待Redis ReJson在 AWS 上使用 HA 配置运行。

使用 RDB 备份在 EC2 上设置它是最好的方法吗?EBS 存储将如何工作,因为我希望多可用区也自动故障转移。

现在我计划在某个地方使用 helm chart 将其部署在 Kubernetes 上:https ://hub.helm.sh/charts/stable/redis-ha

哪个是部署 EC2 或 Kubernetes 的更好选择?& 如果使用 EC2 或 Kubernetes 部署,数据复制将如何在多可用区中工作?

0 投票
1 回答
148 浏览

amazon-web-services - 在 Redis ReJSON 的部署中共享 PV 不起作用

集群信息:

Kubernetes 版本:主要:“1”,次要:“17”

正在使用的云:裸机

安装方式:minikube with kubectl

主机操作系统:Ubuntu 16.04

问题:

我正在创建 3 个副本并将在其中一个 pod 中创建 JSON 集。只能在该 pod 内访问数据。我的问题是如何访问同一个集合并从另一个 pod 获取它。

这是 YAML 文件:

0 投票
1 回答
303 浏览

redis - 使用 ReJSON 从 redis 获取元素范围

所以在 json 中,我们有一个名为items的键,它实际上包含一个元素数组,现在我们可以使用JSON.GET employees-list .items[1].

但是在我们的例子中,我们需要从这个数组中获取一个范围,比如索引为 0-10、10-20的元素用于分页目的,这样我们就不必在代码中获取整个数据然后过滤结果。

我正在寻找它的原因是因为如果我们正在读取整个列表,那么由于数据大小将是巨大的数据传输延迟会增加,因为使用它的 API 和 redis 服务器不在同一个实例上,而且不必这样做更有意义如果可能的话,用代码来做。

所以第一件事是它甚至可能,如果是的话,我们如何才能实现它?

0 投票
0 回答
171 浏览

python - 如何将 rejson Python 模块添加到现有的 Redis 容器

我正在使用 Ubuntu、Redis 和 Python+Flask 的 Docker 容器。我还想在此容器中使用 Redis rejson 模块,但不知道如何将两者结合起来,因为 RedisJSON (可能仅)通过其 Docker 容器运行。我试图只在现有容器中导入 rejson python 模块,但 Docker 控制台导致“ImportError:没有名为 rejson 的模块”。

我试图通过这个 Dockerfile 构建这样一个容器:

而 requirements.txt 是:

但这再次导致“ImportError:没有名为 rejson 的模块”

我设法在自己的容器中使用 rejson,但现在我的目标是将它与其他容器结合起来。有任何想法吗?

0 投票
1 回答
371 浏览

spring-boot - Spring数据redis对模块的支持?

我正在使用带有生菜驱动程序(版本 5.1.3RELEASE)的 Spring 数据 Redis(版本 2.1.1RELEASE)我想使用这个模块:https ://oss.redislabs.com/redisjson/但驱动程序似乎没有支持它。

我尝试使用以下execute方法:

并得到一个错误:

java.lang.IllegalArgumentException:没有枚举常量 io.lettuce.core.protocol.CommandType.JSON.GET FOO

有没有办法做到这一点?如何使用 Redis 模块?

0 投票
0 回答
529 浏览

database - 加载模块后无法启动服务器

我尝试使用 redis.conf 加载 RedisJSON 模块,如说明中所述。所以我loadmodule /home/artyom/RedisJSON/src/rejson.so用“#”代替了这个例子,然后我的服务器崩溃了。我使用sudo systemctl status redis 并得到:

毫无疑问,模块位置是正确的,因为当我没有更改redis.conf但使用redis-server --loadmodule /home/artyom/RedisJSON/src/rejson.so. 顺便说一句,我尝试了一些来自https://askubuntu.com/questions/888726/failed-to-start-redis-datastore-server-ubuntu-16-04-1-lts的解决方案,但没有一个有帮助。那么,问题是什么?为什么我的服务器停止工作?

0 投票
1 回答
643 浏览

windows - Redis 问题为 Windows 编译 ReJSON 模块

我一直在尝试为我的机器查找或编译ReJSON模块。Windows我找不到任何 ReJSON Module 的预编译版本,这就是我想自己编译它的原因。因此,我访问了他们的 GitHub 页面以获取源代码,然后执行以下步骤

我收到以下错误

我认为MakeFile中有一些MacOS配置。因此,我搜索了所有单词-mmacosx-version-min=10.6并评论了这些行,以便可以将其从 Make 过程中排除。它工作并显示了一些良好的进展,但最后现在它给出了一些其他错误

我以为我做错了。可能这个 ReJSON 模块对于 Windows 根本不可能,但没有关于它是否适用于 Windows 的文档。我在模块编译方面很聪明。请给我一些指导。我迫切需要这个适用于 Windows 的 ReJSON 模块。

0 投票
1 回答
306 浏览

redis - 如何在 Redis 中存储 Json 数据?

我想使用 Redis 的哈希并将 JSON 对象存储在一个键中,将数组存储在另一个键中。我怎么能做到这一点。

例如当我运行这个:

然后它给出了错误。

但是,如果我将 key2 的值​​更改为字符串,它将以字符串的形式存储。我想存储 JSON 数据。我该怎么做?

我正在使用 Node 和redis npm 包。

0 投票
1 回答
1419 浏览

json - Redis:何时使用哈希与 RedisJSON?

我可以在 Redis 中将资源存储为hashRedisJSON。在这种情况下,我的特定数据是由多个字符串和数字字段组成的临时数据对象。用户将调用一个创建如下结构的进程:

这实际上是一个客户端用户处理的队列(队列由单独的 Redis处理),其中每个对象将保持使用(作为哈希或 RedisJSON 对象)平均大约 1 小时。在任何给定时间,队列中都会有数万个这样的对象。在队列中,对象的字段(例如user1_statususer2_status)将被更新几次。

处理完每个对象后,我可以将其留在 Redis 中,也可以将每个对象移动到冷存储数据库中以保存日志并从 Redis 中删除。我不确定我是应该这样做还是离开它。

哪种 Redis 数据类型(Hash 或 RedisJSON)更适合我的任务?在这两种类型之间做出决定时有哪些一般考虑因素?

注意:我意识到如果我想做这样的事情:

RedisJSON 可能是正确的选择,因为您必须在将任何对象存储为哈希之前将其展平。为了这个问题,假设我不需要这样做,因为我已经知道了。