散列数据类型可以理解为多个键值对的集合,该集合的名称叫做散列键,集合中的每个对象也是一种字典结构,该字典的值只能是字符串类型,考虑如下结构的二维数据.
在每个唯一的user_id键下都有若干用户的一些属性信息,例如姓名,年龄等,但是每个user_id键下的属性可能又有部分差异,例如user_id等于1的用户存在出生日期,其他用户并没有该信息,针对这一类的数据,我们引入redis散列数据类型进行字典存储.
- HSET,HGET,HMSET,HMGET,HGETALL
HSET与HGET设置和读取散列类型的值,如以下设置散列键user_id.1的字典键值对
> hset user_id.1 username "Michele Monique Reis"(integer) 1> hset user_id.1 height 172(integer) 1> hset user_id.1 age 18(integer) 1> hset user_id.1 hubby "Julian Hsu"(integer) 1> hset user_id.1 birthday "1966-10-28"(integer) 1> type user_id.1 //type查看字符串数据类型hash> hget user_id.1 username"Michele Monique Reis"> hget user_id.1 height"172"> hget user_id.1 age"18"> hget user_id.1 hubby"Julian Hsu"> hget user_id.1 birthday"1966-10-28"
HMSET与HMGET,批量设置和读取散列类型的值
> hmset user_id.2 username "Anita Yuen" height 170 age 19 hubby "Julian Cheung" profession actorOK> hmset user_id.3 username "Chingmy Yau" height 168 age 19 hubby "Jiawei Shen"OK> hmset user_id.4 username "Cherie Chung" height 165 age 19 constellation Gemini hubby "Mike Ka Ting CHU"OK> hmget user_id.2 username height age hubby profession1) "Anita Yuen"2) "170"3) "19"4) "Julian Cheung"5) "actor"
HGETALL,该命令可以查看指定散列键下所有的字典键值对,奇数为字典键,偶数为字典值
> hgetall user_id.31) "username"2) "Chingmy Yau"3) "height"4) "168"5) "age"6) "19"7) "hubby"8) "Jiawei Shen"
- HEXISTS
该命令用于判断某个hash键下指定的字典键是否存在,存在为1,不存在为0
> hexists user_id.3 username(integer) 1> hexists user_id.3 profession(integer) 0
- HSETNX
该命令用于设置仅当hash键下的指定字典键不存在时再设置该键值
> hexists user_id.3 profession(integer) 0> hsetnx user_id.3 profession actor(integer) 1> hexists user_id.3 profession(integer) 1
- HINCRBY
该命令用于增加hash键下指定字典键的值,且仅用于该键的值为数值类型时.
hget user_id.4 age"19"
- HDEL
HDEL用于删除一个或多个hash键的字典键值对
> hgetall user_id.4 1) "username" 2) "Cherie Chung" 3) "height" 4) "165" 5) "age" 6) "25" 7) "constellation" 8) "Gemini" 9) "hubby"10) "Mike Ka Ting CHU"> hdel user_id.4 constellation hubby(integer) 2> hgetall user_id.41) "username"2) "Cherie Chung"3) "height"4) "165"5) "age"6) "25"
- HKEYS与HVALS
该命令用于查看指定hash键下所有的键或键值
> hkeys user_id.41) "username"2) "height"3) "age" hvals user_id.41) "Cherie Chung"2) "165"3) "25"
- HLEN
HLEN并不是查看指定hash键下的键值对的长度,而是键值对的个数
> hkeys user_id.31) "username"2) "height"3) "age"4) "hubby"5) "profession"> hlen user_id.3(integer) 5