我有通过node.js存储在Redis中的JSON(< 1k)。将其存储为对象或字符串有哪些优缺点?我错过了其他选择吗?所有处理最终都会在客户端进行,因此无需转换为对象。
设置
var images = JSON.parse(data); // data is already JSON, is this needed?
callback(images); // sends result to the user
r.set('images:' + req.query, images); // saving the object
获取
callback(images);
答案 0 :(得分:34)
您可以将redis中的JSON存储为专用密钥(或集合/列表的成员/值)或hash结构中的普通字符串。如果您将node_redis文档查看到 Friendlier哈希命令部分,您会发现它为您提供了一些操作基于JSON的数据的有用方法。这种方法的优点在于,它允许您仅获取/设置原始对象的一部分,并且与普通字符串相比,它也可能consume less memory。
答案 1 :(得分:2)
您可以使用此库redis-json
示例用法示例:
import Redis from 'ioredis';
import JSONCache from 'redis-json';
const redis = new Redis();
const jsonCache = new JSONCache(redis)
const user = {
name: "test",
age: 21,
gender: "male"
}
await jsonCache.set('123', user)
const result = await jsonCache.get('123')
此库将json存储在哈希集中。
它还支持单个键或一组键的返回,即
await jsonCache.get('123', "age", "name")
答案 2 :(得分:0)
这就是我将json存储在Redis缓存中的方式
Models.Student.findAll({
where: {
id : req.params.id
}
}).then(doc => {
client.setex(req.params.id, 3600, doc);
res.send(200, doc);
}).catch(err =>{
console.log(err);
res.send(400, err);
});