问题标签 [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 回答
32 浏览

json - 如何在 RediSearch 中使用 @ 符号?

我一起使用模块 RedisJSON 和 RediSearch 对 JSON 数据执行搜索查询。给定一个像这样的 json 列表:

{“电子邮件”:“test1@example.com”,“is_checked”:1}

我愿意:

但我得到了Syntax error

如何选择值“test1@example.com”?

0 投票
0 回答
33 浏览

redis - 路径不存在或不包含数字

我想调用我的 lua 脚本来增加库存中的物品数量,但遇到了一个异常:

ERR 错误运行脚本(调用 f_sha):@user_script:108:路径“$.inventory.1x1.c”不存在或不包含数字

这是lua脚本代码

  • userId 为 key,eg: User1
  • itemData 为“1x1”(格式为item id++作为字符串xversion
  • itemPath 是库存物品的路径,例如:“inventory.1x1” 其中“1x1”是物品数据
  • itemPath..".c" 是库存中特定项目数量计数的路径,例如:"inventory.1x1.c"
  • is_empty(input) 是检查输入是否为nil或的本地函数empty string

期望:上面的代码检查“库存”字典中是否存在键“1x1”,如果还没有,则创建新记录,否则通过命令"1x1":{"id":1,"c":adjust amount}执行数字增加。JSON.NUMINCRBY使用不存在“1x1”的测试数据,因此应执行第 106 行

实际结果:代码运行失败,在第 108 行出现异常,正如我在上面粘贴的那样

第一行的结果local dbCount = redis.call("JSON.MGET", userId, itemPath..".c")是一个表值,第一个参数是null因为项目“1x1”在用户的库存中尚不存在:

但是我使用的条件是is_empty(dbCount) or is_empty(dbCount[1])应该触发并且脚本会尝试创建新记录(第 106 行)。我不知道为什么它是假的,redis 试图增加金额(第 108 行)

0 投票
1 回答
23 浏览

javascript - 有什么方法可以不使用 redisJSON 的重复(或复制)变量?

基本上,我正在尝试使用 redisJSON 将我的应用程序的 JSON 存储在 redis 中。在我修改和更新 json 的项目中,我在这里和那里有不同的功能。现在,当我尝试在 redis 中存储和更新值时,我必须不断复制这些值以进行更改,然后将其更新回 redis。这个过程有什么替代方法吗?

我已经给出了上面的一个例子,基于这个例子你们可以为我提供一个不使用mainUsersCopy的解决方案。仅供参考,控制台记录我们得到的mainUsers

这就是mainUsers被解构的原因。提前致谢。

0 投票
1 回答
17 浏览

node.js - 如何正确输入异步 RedisJSON 方法?

我在正确键入 redis 节点包时遇到问题。作为简单 JSON.GET 的基本代码示例

异步函数返回一个 Promise,在这个例子中,我希望从 redis 返回的数据是一个对象数组,比如

我正在努力解决的是如何只从返回的数组中返回第一个对象,如果我尝试:

我在 vscode 中收到以下错误:

元素隐式具有“任何”类型,因为“0”类型的表达式不能用于索引类型“Promise<string | 号码 | 布尔值 | 日期 | (string | number | boolean | Date | (string | number | boolean | Date | (string | number | boolean | Date | (string | ... 5 more ... | null)[] | { ...; } | null)[] | { ...; } | null)[] | { ...; } | null)[] | { ...; } | 空>'。

因此,可以理解的是,如果我尝试类似

我认为这种类型来自 @node-redis 包中的 RedisJSON 类型,但无论哪种方式,我都不清楚如何解决这个问题。我可以接近可行的唯一方法是使用辅助函数将 getSomeData 的结果分配给任何类型,但这违背了使用 TypeScript 的意义。谁能指出我应该如何正确键入使用新 RedisJSON 方法的异步函数以便可以使用结果的方向?谢谢

编辑:为清楚起见,我使用的包是https://www.npmjs.com/package/redis

0 投票
1 回答
14 浏览

redis - REdisJSON 命令 JSON.SET 在 syslog-ng 目标中不起作用

我在以下代码中尝试了“LPUSH”命令,它可以工作,但 redisjson 命令不工作

有人可以帮助找出它不起作用的原因以及如何使它起作用吗?

0 投票
0 回答
8 浏览

json - Redis Json 模块未打开

模块 rejson.so 加载失败:rejson.so:无法打开共享对象文件

修改了写入和执行但不工作的权限,也放到了etc/redis文件夹