五大数据类型-Hash(哈希)
简介
Hash是一个键值对的集合。
Hash 是一个 String 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。
Hash 是 Redis 中出现最为频繁的复合型数据结构,除了 dict 结构的数据会用到Hash外,整个 Redis 数据 库的所有 key 和 value 也组成了一个全局Hash,还有带过期时间的 key 集合也是一个Hash。set集合相 当于一个value为null的Hash,zset 集合中存储 value 和 score 值的映射关系也是通过 hash 结构实现 的。
每个 Hash 可以存储 2^32 - 1 键值对(40多亿)
常用命令
-
hset key field value给key集合中的field赋值value。
如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
如果字段已经存在于哈希表中,旧值将被重写。
hset user name czx 创建一个key为user的哈希,并创建name字段,给name字段赋值为cxz hset user age 22 在key为user的哈希中,创建age字段赋值为22 hset user name tuzhon 将key为user的哈希name字段修改为tuzhon
-
hget key field从key哈希中,取出field字段的值。
hget user name 从key为user的哈希中取出name字段的值,结果为tuzhon
-
hmset key field1 value1 field2 value2……批量设置哈希的字段及值。
hmset user1 name cxz age 15 创建一个key为user1的哈希,有两个字段name和age
-
hsetnx key field value 给key哈希表中不存在的的字段赋值 。
如果哈希表不存在,一个新的哈希表被创建并进行 hsetnx 操作。
如果字段已经存在于哈希表中,操作无效。
如果 key 不存在,一个新哈希表被创建并执行 hsetnx 命令。
hsetnx user name cxz 已经存在显示0,设置失败 hsetnx user2 name cxz 显示1,设置成功
-
hexists key field 判断指定key中是否存在field
如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。
hexists user name
-
hkeys key获取该哈希中所有的field。
hkeys user
-
hvals key获取该哈希中所有的value。
hvals user
-
hincrby key field increment为哈希表key中的field字段的值加上增量increment。
增量也可以为负数,相当于对指定字段进行减法操作。
如果哈希表的 key 不存在,一个新的哈希表被创建并执行 hincrby 命令。
如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
对一个储存字符串值的字段执行 hincrby 命令将造成一个错误。
hincrby user age 10 hincrby user age -5 hincrby user age -30
-
hdel key field1 field2……删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。
返回被成功删除字段的数量,不包括被忽略的字段。
hdel user name age 删除user中的name和age字段
-
hgetall key获取在哈希表中指定 key 的所有字段和值
hgetall user1