本文内容为 http://www.redis.io/commands/hdel 的翻译、注解、例子扩充及其它修改。感谢 Redis 作者 Antirez 为开源社区作出的贡献,本文保证最新、最准、最全以表示对其的敬意。欢迎留言纠错、提示更新或支持。
HDEL key field [field ...]

从存储在键 key 中的哈希(Hash)对象中删除指定字段(Field)

Removes the specified fields from the hash stored at key.

如果指定的字段不存在于当前哈希对象中,则直接忽略。如果键 key 不存在,则将其视为一个空哈希对象,此时当前命令返回 0

Specified fields that do not exist within this hash are ignored. If key does not exist, it is treated as an empty hash and this command returns 0.
  • 从当前哈希对象中删除的字段的个数,不包括指定删除但不存在的字段。

    Integer reply: the number of fields that were removed from the hash, not including specified but non existing fields.
  • redis> HSET myhash field1 "foo"
    (integer) 1
    redis> HDEL myhash field1
    (integer) 1
    redis> HDEL myhash field2
    (integer) 0
  • 版本支持

    2.0.0+

    只在在 2.4+ 版中才支持同时删除多个字段。Redis 版本低于 2.4 的一次调用只能删除一个字段。

    如果希望在早期版本中以原子操作方式来同时删除多个字段,可以使用 MULTI / EXEC 块。

    >= 2.4: Accepts multiple field arguments. Redis versions older than 2.4 can only remove a field per call.

    To remove multiple fields from a hash in an atomic fashion in earlier versions, use a MULTI / EXEC block.

    时间复杂度(Time complexity)

    O(N)N 为将被删除的字段的数量。

     O(N) where N is the number of fields to be removed.