Redis哈希表基本操作汇总(附带实例)
Redis中,哈希表是一个字符串类型的字段(Field)和值(Value)的映射表,Redis 中每个哈希表可以存储 2^32- 1个键值对。
哈希表特别适合用于存储对象,比如存储用户信息、商品信息,等等。
hset 命令的语法格式如下:
2) 获取存储在哈希表中指定字段的值,可以借助 hget 命令实现。
hget 命令的语法格式如下:
3) 删除一个或多个哈希表字段,可以借助 hget 命令实现。
hdel 命令的语法格式如下:
4) 查看哈希表的 key 中指定的字段是否存在,可以借助 hexists 命令实现。
hexists 命令的语法格式如下:
5) 获取哈希表中指定 key 的所有字段和值,可以借助 hgetall 命令实现。
hgetall 命令的语法格式如下:
6) 获取所有哈希表中的字段,可以借助 hkeys 命令实现。
hkeys命令的语法格式如下:
7) 获取哈希表中字段的数量,可以借助 hlen 命令实现。
hlen 命令的语法格式如下:
8) 同时将多个 field-value 域值对设置到哈希表的 key 中,可以借助 hmset 命令实现。
hmset 命令的语法格式如下:
9) 获取所有给定字段的值,可以借助 hmget 命令实现。
hmget 命令的语法格式如下:
10) 获取哈希表中所有值,可以借助 hvals 命令实现。
hvals 命令的语法格式如下:
11) 只有在字段 field 不存在时,设置哈希表字段的值,可以借助 hsetnx 命令实现。
hsetnx 命令的语法格式如下:
12) 为哈希表中 key 指定字段的整数值加上增量 increment,可以借助 hincrby 命令实现。
hincrby 命令的语法格式如下:
13) 为哈希表中 key 指定字段的浮点数值加上增量 increment,可以借助 hincrbyfloat 命令实现。
hincrbyfloat 命令的语法格式如下:
14) 迭代哈希表中的键值对,可以借助 hscan 命令实现。
hscan 命令的语法格式如下:
哈希表特别适合用于存储对象,比如存储用户信息、商品信息,等等。
哈希表基本操作
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"