gpt4 book ai didi

redis - LPUSH 命令是否适用于从 JSON 初始化的记录?

转载 作者:IT王子 更新时间:2023-10-29 06:00:36 31 4
gpt4 key购买 nike

如果 redis 记录是从一个包含列表的 JSON 对象设置的,LPUSH 命令是否可以稍后在该列表上使用来更新它? (在 node.js 上使用 redis)谢谢

最佳答案

没有。Redis 与格式无关。不能解析JSON,也不是面向文档的数据库。

LPUSH 仅适用于 Redis 列表对象。

但是使用 Lua Redis 2.6 服务器端脚本功能可以做的是解码 JSON 对象、添加项目、编码回对象并存储它的脚本。

例如,使用以下 JSON 对象:

set users:1 "{\"id\":1,\"name\":\"Rocco\",\"age\":50,girlfriends:[\"Ulla\"]}"

添加一个新女朋友可以使用 eval command 一次操作实现:

eval "local t = cjson.decode( redis.call('get',KEYS[1] ))
if t.girlfriends then
table.insert(t.girlfriends,ARGV[1])
else
t.girlfriends = {ARGV[1]}
end
return redis.call('set',KEYS[1], cjson.encode(t))
" 1 user:1 Augusta

另一种可能性是避免将 JSON 对象直接存储在 Redis 中,而是编写一个层将 JSON 对象转换为多个 Redis 键(将列表部分隔离在其特定键中)。

例如:

 { "id":1, "name": "Rocco", "age":50,
girlfriends: [ "Ulla", "Bella", "Josepha", "Isabella" ] }

可以存储为:

 HMSET users:1:info name Rocco age 50
RPUSH users:1:girlfriends Ulla Bella Josepha Isabella

这种方法的主要好处是性能和部分更新支持。主要缺点是失去了一些灵 active ,并且转换代码可能编写起来很乏味。

关于redis - LPUSH 命令是否适用于从 JSON 初始化的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10396764/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com