String类型是将对象序列化为json字符串后存储到redis中,当需要修改对象某个字段时非常不方便,只能全部覆盖,比如下面的数据,要修改age字段,只能把整个json全部覆盖,这时使用hash类型就比较方便
| key | value |
| ------ | ------ |
| zss:user:1 | {“id”:1,“name”:“张三”,“age”:18} |
| zss:goods:1 | {“id”:1,“name”:“金属防风打火机”,“price”:9.9} |
介绍
Hash类型,也叫散列,value是一个无序字典,类似于java中的HashMap结构,Hash结构可以将对象中的每个实例变量独立存储,可以针对单个实例变量做crud操作,比string类型的json更加灵活
常用命令
HSET zss:user:3 name 王 五 age 18
: 添加或者修改hash类型的key的1个或多个field的值
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4IOjxHxu-1681144042044)(null)]HGET zss:user:3 age
: 获取1个hash类型的key的1个field的值HMGET zss:user:3 name age
: 获取hash类型的key的多个field的值
192.168.2.16:28003> HMGET zss:user:3 name age
王 五
18
HGETALL zss:user:3
: 获取1个hash类型的key的所有field和value
192.168.2.20:24003> HGETALL zss:user:3
-> Redirected to slot [5437] located at 192.168.2.16:28003
name
王 五
age
18
HKEYS zss:user:3
获取1个hash类型的key中的所有field
192.168.2.16:28003> HKEYS zss:user:3
name
age
HVALS zss:user:3
: 获取1个hash类型的key中的所有value
192.168.2.16:28003> HVALS zss:user:3
王 五
18
HINCRBY zss:user:3 age 2
: 让1个hash类型key的字段值自增并指定步长,这里设置的是步长为2,相当于一次+2
192.168.2.16:28003> HINCRBY zss:user:3 age 2
20
192.168.2.16:28003> HINCRBY zss:user:3 age 2
22
192.168.2.16:28003> HVALS zss:user:3
王 五
22
HSETNX zss:user:3 sex 男
: 添加1个hash类型的key的field值,字段不存在则添加,否则返回0
192.168.2.16:28003> HSETNX zss:user:3 sex 男
1
192.168.2.16:28003> HSETNX zss:user:3 sex 男
0