hash是一个键值对类型,适用于存储对象,类型java类型中的Map<String,Object>。
hash通过key(用户id)+field(属性),field可以存储对象的各种属性,可以避免redis中重复存储数据。如下图:
1、hset key field value :添加一个用户数据,key为用id, field为对应属性标识,value为对应属性数据,一次可以添加一个属性:
//添加用户id为student001的name属性数据
//结果为:student001={name:zhansan}
hset student001 name zhansan
2、hget key field :获取对应用户id的属性数据,key为用户id,field为属性:
//stu001={name:lisi,age:18,sex:男}
//获取stu001的name属性
//结果:“lisi”
hget stu001 name
//获取stu001的age属性
//结果:18
hget stu001 age
3、hmset key field1 value1 ... filedn valuen :批量添加属性数据:
//结果为:stu1={name:lisi,age:18,sex:男}
hmset stu1 name lisi age 18 sex 男
4、hexists key field :查看用户标识为key的属性field是否存在:
//stu={name:lisi,age:28}
//结果:false
hexists stu sex
//结果:true
hexists stu name
5、hkeys key :列举出key中所有属性标识:
//stu={name:lisi,age:18}
//结果:"name","age"
hkeys stu
6、hvals key:列举出key中所有属性数据:
//stu={name:lisi,age:18}
//结果:"lisi","18"
hvals stu
7、hincrby key field incrment :对key中的field属性值增加increment大小,field对应value值必须为整型才可以增加,否则不增加:
//stu={name:lisi,age:18}
//对属性age加5
//结果:stu={name:lisi,age:23}
hincrby stu age 5
//对属性name加5
//结果:出现错误,不合法操作
hincrby stu name 5
8、hsetnx key field value :只有key中field不存在才可以添加该属性:
//stu={name:lisi,age:18}
//添加属性:sex
//结果:stu={name:lisi,age:18,sex:男}
hsetnx stu sex 男
//添加属性:name
//结果:无法添加,name属性已经存在
hsetnx stu name wanwu