Redis基本类型之Hash类型
一、简介
- Hash类型,也叫散列,其value是一个无序字典,类似于Java中的HashMap结构
- String结构是将对象序列化为JSON字符串后存储,当需要修改对象某个字段时很不方便
- Hash结构可以将对象的每个字段独立存储,可以针对单个字段做CRUD
二、Hash类型的常见命令
命令 | 作用 |
---|
hset | 添加或者修改hash类型key的field |
hget | 获取一个hash类型key的field的值 |
hmset | 批量添加多个hash类型key的field的值 |
hmget | 批量获取多个hash类型的key的field的值 |
hgetall | 获取一个hash类型的key中的所有的field和value |
hkeys | 获取一个hash类型的key中的所有的field |
hvals | 获取一个hash类型的key中的所有的value |
hincrby | 让一个hash类型key的字段值自增并指定步长 |
hsetnx | 添加一个hash类型的key的field值,前提是这个field不存在,否则不执行 |
三、操作案例
1、hset(设置)
- hset:添加或者修改hash类型key的field
# 添加
192.168.246.128:6379> HSET sgz:user:3 name LiLi
(integer) 1
192.168.246.128:6379> HSET sgz:user:3 age 21
(integer) 1
# 修改
192.168.246.128:6379> hset sgz:user:3 age 29
(integer) 0
2、hget(获取)
- hget:获取一个hash类型key的field的值
192.168.246.128:6379> HGET sgz:user:3 name
"LiLi"
192.168.246.128:6379> HGET sgz:user:3 age
"29"
3、hmset(批量设置)
- hmset:批量添加多个hash类型key的field的值
192.168.246.128:6379> HMSET sgz:user:4 name LiYun
OK
192.168.246.128:6379> HMSET sgz:user:4 name LiYun age 20 sex woman
OK
4、hmget(批量获取)
- hmget:批量获取多个hash类型的key的field的值
192.168.246.128:6379> HMGET sgz:user:4 name age sex
1) "LiYun"
2) "20"
3) "woman"
5、hgetall(获取全部)
- hgetall:获取一个hash类型的key中的所有的field和value
192.168.246.128:6379> HGETALL sgz:user:4
1) "name"
2) "LiYun"
3) "age"
4) "20"
5) "sex"
6) "woman"
6、hkeys(获取field)
- hkeys:获取一个hash类型的key中的所有的field
192.168.246.128:6379> HKEYS sgz:user:4
1) "name"
2) "age"
3) "sex"
7、hvals(获取value)
- hvals:获取一个hash类型的key中的所有的value
192.168.246.128:6379> HVALS sgz:user:4
1) "LiYun"
2) "20"
3) "woman"
8、incrby(自增)
- hincrby:让一个hash类型key的字段值自增并指定步长
192.168.246.128:6379> HINCRBY sgz:user:4 age 2
(integer) 22
192.168.246.128:6379> HINCRBY sgz:user:4 age -22
(integer) 0
192.168.246.128:6379> HINCRBY sgz:user:4 age 20
(integer) 20
9、hsetnx(创建键值对)
- hsetnx:添加一个hash类型的key的field值,前提是这个field不存在,否则不执行,0不存在
192.168.246.128:6379> HSETNX sgz:user:4 sex woman
(integer) 0
192.168.246.128:6379> HSETNX sgz:user:3 sex woman
(integer) 1
192.168.246.128:6379> HGETALL sgz:user:3
1) "name"
2) "LiLi"
3) "age"
4) "29"
5) "sex"
6) "woman"