Redis 是采用字典结构以键值对形式存储数据。而散列类型也是一种字典结构,它存储了字段和字段值的映射,但是字段值只能是字符串,不支持其它的类型数据。散列类型适合存储对象。 比如一个汽车对象,汽车有颜色,名称,价格等属性。那么我们就可以使用散列类型存储该对象。

键名:cart:1 字段->值: color->blue,name->bmw,price->40w

语法:

HSET key filed vlaue //设置单个值 
HGET key field //获取单个字段值 
HMSET key field value [field value….] //同时设置多个字段值 
HMGET key filed[field…] //同时获取多个字段值 
HGETALL key //获取所有 
HDEL key field //删除字段

HSET 命令会不区分插入操作还是更新操作,当执行的是插入操作的时候结果会返回1,当执行的是更新操作的时候,返回的是0。键本身如果不存在,也会自动创建。

Redis每个键都属于一个明确的数据类型

语法示例:

设置car对象color属性

HSET car color blue

设置car对象name属性

HSET car name bmw

获取name属性

HGET car name

设置多个字段属性

HMSET car color blue name bmw

获取多个字段

HMGET car color name

获取对象所有字段

HGETALL car

结果示例:

1) “name” 
2) “bmw” 
3) “color” 
4) “blue” 

使用HGETAll返回的结果是这样的

删除字段

HDEL car name

判断字段是否存在

HEXISTS car name

当字段不存在时赋值

HSETNX car name bms

如果字段不存在则赋值,存在则不操作。

数字字段增加

HINCRBY key field increment

散列类型不存在INCR方法,所以只能通过这个命令实现。

只获取字段名或者字段值

HKEYS car

HVALs car r`