Skip to main content
 首页 » 编程设计

redis之如何将对象数组保存为redis中的哈希值

2024年01月29日10mengfanrong

我正在使用redis在nodejs项目中保存用户信息。用户具有以下结构:

const user = { 
    name: 'u1', 
    age: 20, 
    fav: [{x:0, y:0}, {x:1, y:1}] 
} 

当我通过 node-redis 将这些数据保存到 Redis 中时,它会给出以下警告消息:

client.hmset(userId, user, err => { 
    ... 
} 
 
node_redis: Deprecated: The HMSET command contains a argument of type Array. 
This is converted to "[object Object],[object Object]" by using .toString() now and will return an error from v.3.0 on. 
Please handle this in your code to make sure everything works as you intended it to. 

而redis上保存的数据为:

127.0.0.1:6379[2]> HGETALL 0 
1) "name" 
2) "u1" 
3) "age" 
4) "20" 
5) "fav" 
6) "[object Object],[object Object]" 

我想知道在 Redis 中保存对象数组的最佳方法是什么?

请您参考如下方法:

遇到同样的问题后,我相信保存数据的最直接的解决方案是:

client.hmset(userId, JSON.stringify(user), err => {...}) 

当您检索数据时,您只需询问 userId 数据即可:

JSON.parse(user)