Redis命令---Hash(哈希)篇 (超全)

发布时间:2024年01月03日

目录

1.Redis Hmset 命令 - 同时将多个 field-value (域-值)对设置到哈希表 key 中。

简介

如果哈希表不存在,会创建一个空哈希表,并执行 HMSET 操作。此命令会覆盖哈希表中已存在的字段。Redis Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HMSET KEY_NAME FIELD1 VALUE1 ...FIELDN VALUEN

可用版本: >= 2.0.0

返回值: 如果命令执行成功,返回 OK 。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo" field2 "bar"
OK
redis 127.0.0.1:6379> HGET myhash field1
"foo"
redis 127.0.0.1:6379> HMGET myhash field2
"bar"

2.Redis Hmget 命令 - 获取所有给定字段的值

简介

如果指定的字段不存在于哈希表,那么返回一个 nil 值。Redis Hmget 命令用于返回哈希表中,一个或多个给定字段的值。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HMGET KEY_NAME FIELD1...FIELDN

可用版本: >= 2.0.0

返回值: 一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序一样。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HMGET myhash field1 field2 nofield
1) "foo"
2) "bar"
3) (nil)

3.Redis Hset 命令 - 将哈希表 key 中的字段 field 的值设为 value 。

简介

如果字段已经存在于哈希表中,旧值将被覆盖。如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。Redis Hset 命令用于为哈希表中的字段赋值 。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HSET KEY_NAME FIELD VALUE

可用版本: >= 2.0.0

返回值: 如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
OK
redis 127.0.0.1:6379> HGET myhash field1
"foo"

redis 127.0.0.1:6379> HSET website google "www.g.cn"       # 设置一个新域
(integer) 1

redis 127.0.0.1:6379>HSET website google "www.google.com" # 覆盖一个旧域
(integer) 0

4.Redis Hgetall 命令 - 获取在哈希表中指定 key 的所有字段和值

简介

在返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。Redis Hgetall 命令用于返回哈希表中,所有的字段和值。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HGETALL KEY_NAME

可用版本: >= 2.0.0

返回值: 以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HGETALL myhash
1) "field1"
2) "Hello"
3) "field2"
4) "World"

5.Redis Hget 命令 - 获取存储在哈希表中指定字段的值/td>

简介

Redis Hget 命令用于返回哈希表中指定字段的值。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HGET KEY_NAME FIELD_NAME

可用版本: >= 2.0.0

返回值: 返回给定字段的值。如果给定的字段或 key 不存在时,返回 nil 。

示例

# 字段存在

redis> HSET site redis redis.com
(integer) 1

redis> HGET site redis
"redis.com"


# 字段不存在

redis> HGET site mysql
(nil)

6.Redis Hexists 命令 - 查看哈希表 key 中,指定的字段是否存在。

简介

Redis Hexists 命令用于查看哈希表的指定字段是否存在。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HEXISTS KEY_NAME FIELD_NAME

可用版本: >= 2.0.0

返回值: 如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HEXISTS myhash field1
(integer) 1
redis 127.0.0.1:6379> HEXISTS myhash field2
(integer) 0

7.Redis Hincrby 命令 - 为哈希表 key 中的指定字段的整数值加上增量 increment 。

简介

本操作的值被限制在 64 位(bit)有符号数字表示之内。对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。增量也可以为负数,相当于对指定字段进行减法操作。Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HINCRBY KEY_NAME FIELD_NAME INCR_BY_NUMBER

可用版本: >= 2.0.0

返回值: 执行 HINCRBY 命令之后,哈希表中字段的值。

示例

redis 127.0.0.1:6379> HSET myhash field1 20
(integer) 1
redis 127.0.0.1:6379> HINCRBY myhash field 1
(integer) 21
redis 127.0.0.1:6379> HINCRBY myhash field -1
(integer) 20

8.Redis Hlen 命令 - 获取哈希表中字段的数量

简介

Redis Hlen 命令用于获取哈希表中字段的数量。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HLEN KEY_NAME

可用版本: >= 2.0.0

返回值: 哈希表中字段的数量。 当 key 不存在时,返回 0 。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HLEN myhash
(integer) 2

9.Redis Hdel 命令 - 删除一个或多个哈希表字段

简介

Redis Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HDEL KEY_NAME FIELD1.. FIELDN

可用版本: >= 2.0.0

返回值: 被成功删除字段的数量,不包括被忽略的字段。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HDEL myhash field1
(integer) 1
redis 127.0.0.1:6379> HDEL myhash field2
(integer) 0

10.Redis Hvals 命令 - 获取哈希表中所有值

简介

Redis Hvals 命令返回哈希表所有字段的值。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HVALS KEY_NAME FIELD VALUE

可用版本: >= 2.0.0

返回值: 一个包含哈希表中所有值的表。 当 key 不存在时,返回一个空表。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HVALS myhash
1) "foo"
2) "bar"

# 空哈希表/不存在的key

redis 127.0.0.1:6379> EXISTS not_exists
(integer) 0

redis 127.0.0.1:6379> HVALS not_exists
(empty list or set)

11.Redis Hincrbyfloat 命令 - 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。

简介

如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。Redis Hincrbyfloat 命令用于为哈希表中的字段值加上指定浮点数增量值。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HINCRBYFLOAT KEY_NAME FIELD_NAME INCR_BY_NUMBER

可用版本: >= 2.6.0

返回值: 执行 Hincrbyfloat 命令之后,哈希表中字段的值。

示例

redis 127.0.0.1:6379> HSET myhash field 20.50
(integer) 1
redis 127.0.0.1:6379> HINCRBYFLOAT mykey field 0.1
"20.60"

12.Redis Hkeys 命令 - 获取所有哈希表中的字段

简介

Redis Hkeys 命令用于获取哈希表中的所有字段名。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HKEYS KEY_NAME FIELD_NAME INCR_BY_NUMBER

可用版本: >= 2.0.0

返回值: 包含哈希表中所有字段的列表。 当 key 不存在时,返回一个空列表。

示例

redis 127.0.0.1:6379> HSET myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSET myhash field2 "bar"
(integer) 1
redis 127.0.0.1:6379> HKEYS myhash
1) "field1"
2) "field2"

13.Redis Hsetnx 命令 - 只有在字段 field 不存在时,设置哈希表字段的值。

简介

如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。如果字段已经存在于哈希表中,操作无效。如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。Redis Hsetnx 命令用于为哈希表中不存在的的字段赋值 。Redis 哈希(Hash)

语法

redis 127.0.0.1:6379> HSETNX KEY_NAME FIELD VALUE

可用版本: >= 2.0.0

返回值: 设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 0 。

示例

redis 127.0.0.1:6379> HSETNX myhash field1 "foo"
(integer) 1
redis 127.0.0.1:6379> HSETNX myhash field1 "bar"
(integer) 0
redis 127.0.0.1:6379> HGET myhash field1
"foo"

redis 127.0.0.1:6379> HSETNX nosql key-value-store redis
(integer) 1

redis 127.0.0.1:6379> HSETNX nosql key-value-store redis       # 操作无效, key-value-store 已存在
(integer) 0

总结

在这里插入图片描述

往期回顾
Redis命令—String篇 (超全)
Redis命令—key篇 (超全)

文章来源:https://blog.csdn.net/gzu_01/article/details/135362903
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。