Redis命令HMSET从版本4开始就是deprecated。他们建议改用HSET。但当我尝试这样做时,我得到了一个不同的反对警告。我使用的是:db.hmset('key', {a: 1, b: 'c'})
。现在我尝试用db.hset
替换它,但这会触发:
node_redis: Deprecated: The HSET command contains a argument of type Object.
This is converted to "[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数据库中存储对象的正确方式是什么?
Redis HSET的文档指出:“从Redis 4.0.0开始,HSET是可变的,并允许多个字段/值对。”我希望存储整个对象,就像它在数据库中使用hmset
一样,而不是它的字符串表示。
3条答案
按热度按时间2ic8powd1#
正如这里所描述的,Redis客户端不支持命令参数中的对象。
要以redis轻松存储对象,您可以执行以下操作:
请注意,它将忽略
Symbol
键,并且只对“平面对象”起作用。1hdlvixo2#
看来
hset
的第二个参数必须是一个字符串。如果不是.toString
,将对其应用。但在您的情况下,由于它将返回"[object Object]"
,因此会触发警告。可以改用JSON.stringify({a: 1, b: 'c'})
作为参数cuxqih213#
对于那些使用类型脚本的人,hSet的第二个参数可以是这种类型的字符串数组[‘k1’,‘v1’,‘k2’,‘v2’,...]。因此,以下代码可以工作: