散列类型(hash)
hash 字典结构,存储了字段和字段值的映射,但字典值只能是字符串,不支持其他数据类型。
HSET key field value 和 HGET key field
HSET 设置散列,HGET获取hash值
127.0.0.1:6379[2]> hset aa name zhangsan
(integer) 1
127.0.0.1:6379[2]> hget aa name
"zhangsan"
这个有点像设置对象,aa 是一个对象,name 是对象的一个属性,aa 的name为 zhangsan
HMSET key field value [field value] 和 HMGET key field field
127.0.0.1:6379[2]> HMSET aa age 20 sex 1
OK
127.0.0.1:6379[2]> hget aa name age sex
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379[2]> hmget aa name age sex
1) "zhangsan"
2) "20"
3) "1"
由上面的测试代码可以看出我们设置了一个对象aa, name、age 和sex
HSET 命令不区分是插入操作还是更新操作,如果是插入操作的话,那么返回值为 1 ,如果是更新操作的话那么返回值 是 0
HGETALL key 获取键值
直接获取一个对象的属性和属性值
127.0.0.1:6379[2]> HGETALL aa
1) "name"
2) "zhangsan"
3) "age"
4) "21"
5) "sex"
6) "1"
HEXISTS key field
判断对象的属性是否存在,存在返回 1 不存在返回 0
127.0.0.1:6379[2]> HEXISTS aa name
(integer) 1
127.0.0.1:6379[2]> HEXISTS aa aa
(integer) 0
HSETNX key field value
HSETNX 首先会判断field是否存在,如果存在不执行任何操作,如果不存在则新增属性和属性值
127.0.0.1:6379[2]> hget aa sex
"1"
127.0.0.1:6379[2]> HSETNX aa sex 2
(integer) 0
127.0.0.1:6379[2]> hget aa sex
"1"
127.0.0.1:6379[2]> HSETNX aa price shanghai
(integer) 1
127.0.0.1:6379[2]> HGETALL aa
1) "name"
2) "zhangsan"
3) "age"
4) "21"
5) "sex"
6) "1"
7) "price"
8) "shanghai"
HDEL key field
删除对象中的属性,删除成功返回1 ,删除不成功返回 0
127.0.0.1:6379[2]> HDEL aa price
(integer) 1
127.0.0.1:6379[2]> HGETALL aa
1) "name"
2) "zhangsan"
3) "age"
4) "21"
5) "sex"
6) "1"
HKEYS key 只获取字段名 和 HVALS KEY 只获取字段值
127.0.0.1:6379[2]> HKEYS aa
1) "name"
2) "age"
3) "sex"
127.0.0.1:6379[2]> HVALS aa
1) "zhangsan"
2) "21"
3) "1"
HLEN key 获取字段的数量
获取一个对象有多少个属性
127.0.0.1:6379[2]> HLEN aa
(integer) 3