标签: redisjson

为什么我使用 Redis 时会收到“ReplyError: ERRknown command JSON.SET”?

我试图将 JSON 设置为 Redis 中的值,但收到以下代码的错误:

const createClient = require('redis');


async function redisJSONDemo () {
  try {
    const TEST_KEY = 'test_node';

    const client = createClient.createClient();
    await client.connect();

    // RedisJSON uses JSON Path syntax. '.' is the root.
      await client.json.set(TEST_KEY, '.', { node: 'blah' });
    const value = await client.json.get(TEST_KEY, {
      // JSON Path: .node = the element called 'node' at root level.
      path: '.node'
    });

    console.log(`value of node: ${value}`);

    await client.quit();
  } catch (e) {
    console.error(e);
  }
}

redisJSONDemo();
Run Code Online (Sandbox Code Playgroud)

错误:

ReplyError: …

redis node.js redisjson

11
推荐指数
1
解决办法
2万
查看次数

Redis rejson 或字符串

我将使用 Redis 来存储具有嵌套结构的 json 文档。我的要求只是设置和获取文件。我不需要对文档执行任何特定于 json 的命令。使用 rejson 模块是否有任何优势。GET 和 SET 命令将比 JSON.GET 和 JSON.SET 命令执行得更好。以下来自redis文档

JSON.SET 从 1.0.0 开始可用。时间复杂度:O(M+N),其中 M 是原始值的大小(如果存在),N 是新值的大小。

JSON.GET 从 1.0.0 开始可用。时间复杂度:O(N),其中 N 是值的大小。

GET 密钥 从 1.0.0 开始可用。时间复杂度:O(1)

SET 键值 [expiration EX seconds|PX 毫秒] [NX|XX] 从 1.0.0 开始可用。时间复杂度:O(1)

只是想确认将文档存储为字符串值是正确的做法。

redis redisjson

6
推荐指数
1
解决办法
675
查看次数

错误未知命令“JSON.SET”-Rejson/Redis

我已按照教程操作并运行:

docker run -p 6379:6379 --name redis-rejson redislabs/rejson:latest
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行 redis-cli 然后运行 ​​json.get 时,我得到:

ERR unknown command 'JSON.SET'
Run Code Online (Sandbox Code Playgroud)

模块列表返回零。谁能指导我如何使用 docker 运行 rejson?欣赏。

redis redisjson

5
推荐指数
1
解决办法
7174
查看次数

Redis:何时使用哈希与 RedisJSON?

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

{
    'item_id': 'k0f8h3n5m6n1w9d0k0k1m1n4b6c8f8r7'
    'amount': 3.00042
    'timestamp': 1590440708,
    'user1_status': 'pending',
    'user_2_status': 'completed'
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

{
    'item_id': 'k0f8h3n5m6n1w9d0k0k1m1n4b6c8f8r7'
    'amount': 3.00042
    'timestamp': 1590440708,
    'user1_status': 'pending',
    'user_2_status': 'completed'
    'parent': {
        'item1': 1,
        'item2': [1, 2, 3, 4]
        'item3': {
            'one': 1,
            'two': 2 …
Run Code Online (Sandbox Code Playgroud)

json hashmap redis redisjson

2
推荐指数
1
解决办法
845
查看次数

使用brew在MacOSx上安装Redis JSON

如何使用brew 在 macOSx 上安装 RedisJSON?

如何在不编译redis的情况下启用redis上的模块?我不想使用 docker 客户端

javascript json redis python-3.x redisjson

1
推荐指数
1
解决办法
1492
查看次数

如何在 RedisJSON 中存储大量对象?

假设我有一个 JavaScript 对象,其结构如下:

{
  id: "someUniqueId",
  foo: "otherData",
  bar: 30
}
Run Code Online (Sandbox Code Playgroud)

我想在RedisJSON中存储数百个。我目前正在使用node-redis 客户端将密钥初始化'json-objects'为空对象:

await client.json.set('json-objects', `$`, {});
Run Code Online (Sandbox Code Playgroud)

然后,我将对象添加到该键的根对象,例如:

const dataToStore = {
  id: "someUniqueId",
  foo: "otherData",
  bar: 30
}

await client.json.set('json-objects', `$.${dataToStore.id}`, dataToStore as any);
Run Code Online (Sandbox Code Playgroud)

这会导致键下出现一个大对象,'json-objects'如下所示:

{
  "someUniqueId-1": {
    id: "someUniqueId-1",
    foo: "otherData",
    bar: 30
  },
  "someUniqueId-2": {
    id: "someUniqueId-2",
    foo: "otherData2",
    bar: 31
  },
  "someUniqueId-3": {
    id: "someUniqueId-3",
    foo: "otherData3",
    bar: 32
  },
  and so on...
}
Run Code Online (Sandbox Code Playgroud)

然后我可以使用路径查询和更新:

await client.json.set('json-objects', `$.${id}.foo`, "someUpdatedData"); …
Run Code Online (Sandbox Code Playgroud)

javascript redis node.js node-redis redisjson

0
推荐指数
1
解决办法
144
查看次数

标签 统计

redis ×6

redisjson ×6

javascript ×2

json ×2

node.js ×2

hashmap ×1

node-redis ×1

python-3.x ×1