gpt4 book ai didi

redis - 如何在 Redis 中存储对象数组?

转载 作者:可可西里 更新时间:2023-11-01 11:25:03 24 4
gpt4 key购买 nike

我有一个要存储在 Redis 中的对象数组。我可以分解数组部分并将它们存储为对象,但我不知道如何获得类似

的东西
{0} : {"foo" :"bar", "qux" : "doe"}, {1} : {"name" "Saras", "age" : 23} 

然后根据名称搜索数据库并取回请求的 key 。我需要这样的东西。但无法接近正确。

incr id //correct
(integer) 3
get id //correct
"3"
SADD id {"name" : "Saras"} //wrong
SADD myset {"name" : "Saras"} //correct
(integer) 1

首先要把这部分做好。

其次是以某种方式从值中获取键,即

if name==="Saras"  
then key=1

我觉得很难。或者我可以将它直接存储为对象数组并使用简单的 for 循环。

 for (var i = 0; i < userCache.users.length; i++) {
if (userCache.users[i].userId == userId && userCache.users[i].deviceId == deviceId) {
return i;
}
}

请建议哪条路线最适合某些实现?

最佳答案

我发现有用的方法是将 key 存储为唯一标识符,并在存储数据时将整个对象字符串化,并在提取数据时应用 JSON.parse。

示例代码:

client
.setAsync(obj.deviceId.toString(), JSON.stringify(obj))
.then((doc) => {
return client.getAsync(obj.deviceId.toString());
})
.then((doc) => {
return JSON.parse(doc);
}).catch((err) => {
return err;
});

虽然字符串化然后解析它是一项计算量很大的操作,如果 JSON 的大小变大,将会阻塞 Node.js 服务器。我可能已经准备好尝试降低复杂性,因为我知道我的 JSON 不会很大,但是在采用这种方法时需要牢记这一点。

关于redis - 如何在 Redis 中存储对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47093479/

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