我应该如何在redis中存储JSON?

时间:2012-01-24 12:42:06

标签: node.js redis

我有通过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);

3 个答案:

答案 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);
    });