简介
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。 Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)
可以看成具有KEY和VALUE的MAP容器,该类型非常适合于存储值对象的信息, 如:uname,uage等。该类型的数据仅占用很少的磁盘空间(相比于JSON) 。
Hash命令
赋值语法
HSET key field value [field value …]
Redis Hset 命令用于为哈希表中的字段赋值 。
如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
如果字段已经存在于哈希表中,旧值将被覆盖。
Examples
127.0.0.1:6379> hset people name dsy age 22 height 175
(integer) 3
127.0.0.1:6379> keys *
1) "people"
取值语法
一、HGET key field
Redis Hget 命令用于返回哈希表中指定字段的值。
Examples
127.0.0.1:6379> hget people name
"dsy"
127.0.0.1:6379> hget people age
"22"
127.0.0.1:6379> hget people height
"175"
二、HGETALL key field
Redis Hgetall 命令用于返回哈希表中,所有的字段和值。
在返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍。
Examples
127.0.0.1:6379> hgetall people
1) "name"
2) "dsy"
3) "age"
4) "22"
5) "height"
6) "175"
三、HMGET key field [field …]
Redis Hmget 命令用于返回哈希表中,一个或多个给定字段的值。
如果指定的字段不存在于哈希表,那么返回一个 nil 值。
Examples
127.0.0.1:6379> hmget people name age height weight
1) "dsy"
2) "22"
3) "175"
4) (nil)
四、HKEYS key
Redis Hkeys 命令用于获取哈希表中的所有字段名。
Examples
127.0.0.1:6379> hkeys people
1) "name"
2) "age"
3) "height"
删除语法
HDEL key field [field …]
Redis Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。
Examples
127.0.0.1:6379> hset cat number 2 color yellow
(integer) 2
127.0.0.1:6379> hdel cat number
(integer) 1
127.0.0.1:6379> hgetall cat
1) "color"
2) "yellow"
其他语法
一、HEXISTS key field
Redis Hexists 命令用于查看哈希表的指定字段是否存在。
Examples
127.0.0.1:6379> hexists people name
(integer) 1
127.0.0.1:6379> hexists people color
(integer) 0
二、HINCRBY key field increment
Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。
增量也可以为负数,相当于对指定字段进行减法操作。
如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。
本操作的值被限制在 64 位(bit)有符号数字表示之内。
Examples
127.0.0.1:6379> hget people age
"22"
127.0.0.1:6379> hincrby people age 10
(integer) 32
127.0.0.1:6379> hincrby people age -10
(integer) 22
127.0.0.1:6379> hincrby people money -10
(integer) -10
127.0.0.1:6379> hgetall people
1) "name"
2) "dsy"
3) "age"
4) "22"
5) "height"
6) "175"
7) "money"
8) "-10"
127.0.0.1:6379> hincrby people name 1
(error) ERR hash value is not an integer
三、HINCRBYFLOAT key field increment
Redis Hincrbyfloat 命令用于为哈希表中的字段值加上指定浮点数增量值。
如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
Examples
127.0.0.1:6379> hgetall people
1) "name"
2) "dsy"
3) "age"
4) "22"
5) "height"
6) "175"
7) "money"
8) "-10"
127.0.0.1:6379> hincrbyfloat people money 100.5
"90.5"
四、HLEN key
Redis Hlen 命令用于获取哈希表中字段的数量。
Examples
127.0.0.1:6379> hkeys people
1) "name"
2) "age"
3) "height"
4) "money"
127.0.0.1:6379> hlen people
(integer) 4
四、HVALS key
Redis Hvals 命令返回哈希表所有字段的值。
Examples
127.0.0.1:6379> hgetall people
1) "name"
2) "dsy"
3) "age"
4) "22"
5) "height"
6) "175"
7) "money"
8) "90.5"
127.0.0.1:6379> hkeys people
1) "name"
2) "age"
3) "height"
4) "money"
127.0.0.1:6379> hvals people
1) "dsy"
2) "22"
3) "175"
4) "90.5"