首页 > 解决方案 > 寻找一种将新字段添加到嵌套 redis 对象的更好方法

问题描述

我在节点 js 中使用 redis 包。

我的 redis 中有一个 blogs 字段,如下所示:

console.log((await redisClient.get('blogs')))
// results in something like this
{
  "615f20fee6ee6a760303dbbb": {
    "_id": "615f20fee6ee6a760303dbbb",
    "somefileds": "somevalues"
  },
  ... more stuff
}

我编写了一个将新博客缓存到 redis 的函数,它可以很好地忽略性能问题。

我写了这样的东西:

const writeSingleBlogOnRedis = async blog => {
  const data = JSON.parse((await redisClient.get('blogs')))
  data[blog._id] = blog
  redisClient.set('blogs', JSON.stringify(data))
}

我的想法是我获取所有旧数据并将其设为对象,然后将新博客添加到对象中,对对象进行字符串化,然后再次添加它,我知道这是一种有效的方法。

我尝试使用 hset,我的代码如下所示:

const writeSingleBlogOnRedis = blog => {

  redisClient.hset('blogs', blog._id, JSON.stringify(blog), (err, value) => {})
}

但这会破坏一切,获取博客的结果(上面的 get 函数)将变为空,我做错了什么?

标签: node.jsredisnested-object

解决方案


推荐阅读