首页 > 编程笔记 > Redis笔记 阅读:33

Redis哈希表基本操作汇总(附带实例)

Redis中,哈希表是一个字符串类型的字段(Field)和值(Value)的映射表,Redis 中每个哈希表可以存储 2^32- 1个键值对。

哈希表特别适合用于存储对象,比如存储用户信息、商品信息,等等。

哈希表基本操作

1) 将哈希表 key 中字段 field 的值设为 value,可以借助 hset 命令实现。

hset 命令的语法格式如下:
hset key field value
实例:
127.0.0.1:6379> hset hash_key key1 v1
(integer) 1
127.0.0.1:6379> hset hash_key key2 v2
(integer) 1

2) 获取存储在哈希表中指定字段的值,可以借助 hget 命令实现。

hget 命令的语法格式如下:
hget key field
实例:
127.0.0.1:6379> hget hash_key key1
"v1"
127.0.0.1:6379> hget hash_key key2
"v2"

3) 删除一个或多个哈希表字段,可以借助 hget 命令实现。

hdel 命令的语法格式如下:
hdel key field
实例:
127.0.0.1:6379> hget hash_key key1
"v1"
127.0.0.1:6379> hget hash_key key2
"v2"
127.0.0.1:6379> hdel hash_key key2
(integer) 1
127.0.0.1:6379> hget hash_key key2
(nil)
127.0.0.1:6379> hget hash_key key1
"v1"

4) 查看哈希表的 key 中指定的字段是否存在,可以借助 hexists 命令实现。

hexists 命令的语法格式如下:
hexists key field
实例:
127.0.0.1:6379> hget hash_key key2
(nil)
127.0.0.1:6379> hget hash_key key1
"v1"
127.0.0.1:6379> hexists hash_key key1
(integer) 1
127.0.0.1:6379> hexists hash_key key2
(integer) 0

5) 获取哈希表中指定 key 的所有字段和值,可以借助 hgetall 命令实现。

hgetall 命令的语法格式如下:
hgetall key
实例:
127.0.0.1:6379> hset hash_key key1 v1
(integer) 1
127.0.0.1:6379> hgetall hash_key
"key1"
"v1"
127.0.0.1:6379> hset hash_key key2 v2
(integer) 1
127.0.0.1:6379> hgetall hash_key
"key1"
"v1"
"key2"
"v2"

6) 获取所有哈希表中的字段,可以借助 hkeys 命令实现。

hkeys命令的语法格式如下:
kheys key
实例:
127.0.0.1:6379> hset hash_key key1 v1
(integer) 1
127.0.0.1:6379> hkeys hash_key
"key1"
127.0.0.1:6379> hset hash_key key2 v2
(integer) 1
127.0.0.1:6379> hkeys hash_key
"key1"
"key2"

7) 获取哈希表中字段的数量,可以借助 hlen 命令实现。

hlen 命令的语法格式如下:
hlen key
实例:
127.0.0.1:6379> hset hash_key key1 v1
(integer) 1
127.0.0.1:6379> hlen hash_key
(integer) 1
127.0.0.1:6379> hset hash_key key2 v2
(integer) 1
127.0.0.1:6379> hlen hash_key
(integer) 2

8) 同时将多个 field-value 域值对设置到哈希表的 key 中,可以借助 hmset 命令实现。

hmset 命令的语法格式如下:
hmset key field1 value1 [field2 value2] …
实例:
127.0.0.1:6379> hgetall hash_key
"key1"
"v1"
"key2"
"v2"
127.0.0.1:6379> hkeys hash_key
"key1"
"key2"
127.0.0.1:6379> hmset hash_key key3 v3 key4 v4 key5 v5
OK
127.0.0.1:6379> hgetall hash_key
"key1"
"v1"
"key2"
"v2"
"key3"
"v3"
"key4"
"v4"
"key5"
"v5"
127.0.0.1:6379> hkeys hash_key
"key1"
"key2"
"key3"
"key4"
"key5"

9) 获取所有给定字段的值,可以借助 hmget 命令实现。

hmget 命令的语法格式如下:
hmget key field1 [field2] …
实例:
127.0.0.1:6379> hmget hash_key key1 key3 key5
"v1"
"v3"
"v5"

10) 获取哈希表中所有值,可以借助 hvals 命令实现。

hvals 命令的语法格式如下:
hvals key
实例:
127.0.0.1:6379> hgetall hash_key # 获取指定字段(field)的所有键值对
"key1"
"v1"
"key2"
"v2"
"key3"
"v3"
"key4"
"v4"
"key5"
"v5"
127.0.0.1:6379> hvals hash_key # 获取键值对中的值
"v1"
"v2"
"v3"
"v4"
"v5"

11) 只有在字段 field 不存在时,设置哈希表字段的值,可以借助 hsetnx 命令实现。

hsetnx 命令的语法格式如下:
hsetnx key field value
实例:
127.0.0.1:6379> hset hash_key key1 value1
(integer) 1
127.0.0.1:6379> hget hash_key key1
"value1"
127.0.0.1:6379> hset hash_key key1 value100
(integer) 0
127.0.0.1:6379> hget hash_key key1
"value100"
127.0.0.1:6379> hsetnx hash_key key1 value10000
(integer) 0
127.0.0.1:6379> hget hash_key key1
"value100"
127.0.0.1:6379> hsetnx hash_key key10 value10000
(integer) 1
127.0.0.1:6379> hget hash_key key10
"value10000"

12) 为哈希表中 key 指定字段的整数值加上增量 increment,可以借助 hincrby 命令实现。

hincrby 命令的语法格式如下:
hincrby key field increment
实例:
127.0.0.1:6379> hset hash_key num 100
(integer) 1
127.0.0.1:6379> hget hash_key num
"100"
127.0.0.1:6379> hincrby hash_key num 5
(integer) 105
127.0.0.1:6379> hget hash_key num
"105"
127.0.0.1:6379> hincrby hash_key num -15
(integer) 90
127.0.0.1:6379> hget hash_key num
"90"

13) 为哈希表中 key 指定字段的浮点数值加上增量 increment,可以借助 hincrbyfloat 命令实现。

hincrbyfloat 命令的语法格式如下:
hincrbyfloat key field increment
实例:
127.0.0.1:6379> hset hash_key float 100
(integer) 1
127.0.0.1:6379> hget hash_key float
"100"
127.0.0.1:6379> hincrbyfloat hash_key float 0.5
"100.5"
127.0.0.1:6379> hget hash_key float
"100.5"
127.0.0.1:6379> hincrbyfloat hash_key float -1.5
"99"
127.0.0.1:6379> hget hash_key float
"99"

14) 迭代哈希表中的键值对,可以借助 hscan 命令实现。

hscan 命令的语法格式如下:
hscan key cursor [MATCH pattern] [COUNT count]
实例:
127.0.0.1:6379> hmset hash key1 "1" key2 "2" key3 "3"
OK
127.0.0.1:6379> hkeys hash
1) "key1"
2) "key2"
3) "key3"
127.0.0.1:6379> hscan hash 0 MATCH key2*
1) "0"
2) 1) "key2"
   2) "2"

相关文章