← 返回首页
Redis数据类型之hash
发表时间:2023-11-08 14:49:53
Redis数据类型之hash

Redis数据类型之hash

1.Redis的hash类型

hash类型的值存储了字段和字段值的映射,字段和字段值只能是字符串,不支持其他数据类型。 hash类型的值至多存储2的32次方-1个字段,一般情况下我们也达不到这个极限。hash类型比较适合存储对象,因为对象里面是有一些属性和值的,我们就可以把这些属性和值存储到这个hash类型里面。

hash类型见的命令如下表所示:

案例:

添加和查询数据hset/hget/hmset/hmget/hgetall

#添加数据 hset
127.0.0.1:6379> hset user:1 username zhangsan password 123456
(integer) 2

#查询数据 hget
127.0.0.1:6379> hget user:1  username 
"zhangsan"
127.0.0.1:6379> hmget user:1 username password
1) "zhangsan"
2) "123456"

#向一个hash中同时添加多个k-v,可以使用hmset
127.0.0.1:6379> hmset user:2 username lisi password 654321
OK

#查询一个hash数据中多个k的值 hmget
127.0.0.1:6379> hmget user:2 username password
1) "lisi"
2) "654321"

查询一个hash数据中的所有k-v hgetall
127.0.0.1:6379> hmset user:3 username wangwu password 888888 email 45456456@qq.com
OK

127.0.0.1:6379> hgetall user:3
1) "username"
2) "wangwu"
3) "password"
4) "888888"
5) "email"
6) "45456456@qq.com"

判断一个hash数据中是否存在指定key,使用hexists

127.0.0.1:6379> hexists user:3 email
(integer) 1
127.0.0.1:6379> hexists user:3 mobile
(integer) 0

对一个hash数据中指定k的v进行递增 hincrby

127.0.0.1:6379> hmset user:4 username robot password 66666 age 20
OK
127.0.0.1:6379> hincrby user:4 age 1
(integer) 21

获取一个hash数据中的所有key,使用hkeys

127.0.0.1:6379> hkeys user:4
1) "username"
2) "password"
3) "age"

删除一个hash数据中的指定key,使用hdel

127.0.0.1:6379> hdel user:4 age
(integer) 1
127.0.0.1:6379> hkeys user:4
1) "username"
2) "password"

获取一个hash数据中的所有value,使用hvals

127.0.0.1:6379> hvals user:3
1) "wangwu"
2) "888888"
3) "45456456@qq.com"

获取一个hash数据中有多少个key,使用hlen

127.0.0.1:6379> hlen user:3
(integer) 3