在 redis 中搜索 JSON 值

Umb*_*lla 6 database redis node.js node-redis

我正在开发一个使用 Redis 作为数据库的 NodeJS 服务器,我需要检索具有特定 service_id 值的所有 Redis 键。例如,如果服务 id 为 4,我需要检索 service_id = 4 的所有键。我在 Redis 中得到以下结构,其中值是 JSON:

key: "{service_id: number}"

是否可以过滤具有特定服务 ID 的密钥?也许有一些解决方法可以使其成为可能?

Uro*_* T. 5

尽管 Redis 是一个键:值存储,但您可以通过多种方法对其进行调整以使其受益。例如,您可以使用哈希并存储您的值,如下所示:

HSET services service:1 foo
HSET services service:2 bar
HSET services service:3 buz
Run Code Online (Sandbox Code Playgroud)

所以语法是HSET hashname fieldname value作为一个字段,用冒号分隔 ids。

如果每个键有超过 1 个值,您可以执行以下操作:

HSET services service:1:name foo
HSET services service:1:id 1
HSET services service:2:name bar
HSET services service:2:id 2
Run Code Online (Sandbox Code Playgroud)

因此,通过用另一个冒号分隔密钥,您可以存储更多值。然后,如果您想从服务 1 中检索所有内容,您可以使用通配符执行SCAN ,如下所示:

HSCAN services 0 match service:1:*
Run Code Online (Sandbox Code Playgroud)

哎呀,您甚至可以将每个服务存储为单独的哈希值:

HSET services:1 id 1
HSET services:1 name foo
HSET services:2 id 2
HSET services:2 name buz
Run Code Online (Sandbox Code Playgroud)

或者使用 HMSET 使其更短

HMSET services:1 id 1 name foo
HMSET services:2 id 2 name buz
Run Code Online (Sandbox Code Playgroud)

总之——Redis太棒了!