Redis中的HSET和HMSET是否相同

4
我正在阅读Redis文档并尝试使用Redis,发现了HSETHMSET命令。我找不到它们之间的区别,尝试搜索后发现了以下问题:

Redis数据库中HSET和HMSET方法有什么区别

其中被接受的答案是:

HMSET类似于HSET,但它允许一次设置多个字段/值对。

但是当我尝试时,HSET也允许一次设置多个字段/值对。请参见下面的屏幕截图,对我来说它们似乎都是相同的:

enter image description here

请问有人可以解释一下这两者之间的区别吗?或者在使用情况上,应该选择其中哪一个。

谢谢。

4个回答

9

(我是链接主题中被采纳答案的作者。:))

显然,在那之后的某个时刻,HSET命令已经更新为可变参数(与HMSET相同)。在我的本地redis版本(4.0.2)中,它确实可以设置多个键值对(尽管redis-cli中的命令语法提示不显示这一点)。但是,仍然不支持redis.io上的交互式控制台所使用的版本。

redis> HSET foo a 1 b 2 c 3
ERR ERR wrong number of arguments for 'hset' command

是的,现在它们看起来确实是一样的。


2

我在2019年研究了一下:)

如果有人感兴趣,根据官方文档:

从Redis 4.0.0开始,HMSET被视为已弃用。请在新代码中使用HSET。

https://redis.io/commands/hmset


1

Redis 4.0.0版本开始,HSET命令的用途包括单个和多个字段/值对,HMSET命令已被视为过时(但将在未来几年内继续受支持)。请在新代码中使用HSET命令。

Redis 4.0.0 发布说明指出:

HSET现在是可变参数的,而HMSET被认为是过时的(但将来仍会得到支持)。请在新代码中使用HSET。

因此,如果您正在使用Redis 4.x+,应该使用HSET命令来处理单个和多个字段/值对。


0
无论如何 HMSET/HSET 都是历史设计,HSET 除了 HMSET 什么也不做,你可以用 HMSET 替换 HSET 调用,一切都能正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接