Redis 哈希 Hash
Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。
-
hmset key field1 value1 [field2 value2…]
同时将多个field-value(域-值)对设置到哈希表key中
返回值
如果命令执行成功,返回 OK
`127.0.0.1:6379> hmset hxtest1 name "zhangsan" username "zs.com" password "1234" age 20 gender "woman"` `OK`
-
hdel key field2[field2]
删除一个或多个哈希表字段
返回值
被成功删除字段的数量,不包括被忽略的字段。
`127.0.0.1:6379> hdel hxtest1 name` `(integer) 1` `127.0.0.1:6379> hget hxtest1 name` `(nil)`
-
hexists key field
查看哈希表key中,指定的自读研是否存在
返回值
如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。
`127.0.0.1:6379> hexists hxtest1 name` `(integer) 0`
-
hgetall key
获取在哈希表中指定key的所有字段和值
返回值
以列表形式返回哈希表的字段及字段值。 若 key 不存在,返回空列表。
`127.0.0.1:6379> hgetall hxtest1` `1) "username"` `2) "zs.com"` `3) "password"` `4) "1234"` `5) "age"` `6) "20"` `7) "gender"` `8) "woman"`
-
hincrby key field increment
给哈希表key中的指定字段的整数值加上增加量increment
返回值
执行 HINCRBY 命令之后,哈希表中字段的值。
`127.0.0.1:6379> hincrby hxtest1 age 10` `(integer) 30` `127.0.0.1:6379> hget hxtest1 age` `"30"`
-
hkeys key
获取所有哈希表中的字段
返回值
包含哈希表中所有字段的列表。 当 key 不存在时,返回一个空列表。
`127.0.0.1:6379> hkeys hxtest1` `1) "username"` `2) "password"` `3) "age"` `4) "gender"`
-
hlen key
获取哈希表中字段的数量
返回值
哈希表中字段的数量。 当 key 不存在时,返回 0 。
127.0.0.1:6379> hlen hxtest1
(integer) 4 -
hmget key field1 [field2]
获取所有给定字段的值
返回值
一个包含多个给定字段关联值的表,表值的排列顺序和指定字段的请求顺序一样。
`127.0.0.1:6379> hmget hxtest1 username password gender` `1) "zs.com"` `2) "1234"` `3) "woman"`
-
hset key field value
将哈希表key中的字段field的值设为value
返回值
如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0 。
`127.0.0.1:6379> hset hxtest1 name "zhangsan"` `(integer) 1` `127.0.0.1:6379> hget hxtest1 name` `"zhangsan"`
-
hsetnx key field value
只有字段field不存在时,设置哈希表字段的值
返回值
设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 0 。
`127.0.0.1:6379> hsetnx hxtest1 name "lisi"` `(integer) 0` `127.0.0.1:6379> hsetnx hxtest1 mail "888@163.com"` `(integer) 1` `127.0.0.1:6379> hgetall hxtest1` `1) "username"` `2) "zs.com"` `3) "password"` `4) "1234"` `5) "age"` `6) "30"` `7) "gender"` `8) "woman"` `9) "name"` `10) "zhangsan"` `11) "mail"` `12) "888@163.com"`