1. 为什么使用Hash类型 假设有User对象要存储到Redis中,User对象有id,username、password、age、name等属性,使用String数据类型,存储的过程如下:

redis中的hash类型 redis hash类型使用_赋值

如果是使用这种存储方式的话,我每次更新一个属性

redis中的hash类型 redis hash类型使用_赋值_02



需要在控制台输入所有属性及其对应的属性值,影响效率,同时会造成资源浪费

2.redis hash 介绍
hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。如下:

redis中的hash类型 redis hash类型使用_赋值_03

3.相关命令
3.1 赋值
hset key field value(一次只能设置一个字段值,field代表字段)

redis中的hash类型 redis hash类型使用_赋值_04



hset命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。

redis中的hash类型 redis hash类型使用_User_05



hmset key field value [field value …] (一次设置多个字段值)

redis中的hash类型 redis hash类型使用_User_06



hsetnx key field value(当字段不存在时赋值,类似HSET,区别在于如果字段存在,该命令不执行任何操作)

redis中的hash类型 redis hash类型使用_赋值_07



user已经存在,不给赋值,username还是desir

redis中的hash类型 redis hash类型使用_User_08

redis中的hash类型 redis hash类型使用_赋值_09




user1不存在,创建并赋值

redis中的hash类型 redis hash类型使用_User_10



主要插入成功返回1,插入对象已存在返回0
3.2 取值
hget key field(一次只能获取一个字段值)

redis中的hash类型 redis hash类型使用_赋值_11



hmget key field [field …] (一次可以获取多个字段值)

redis中的hash类型 redis hash类型使用_User_12



hgetall key(获取所有字段)

redis中的hash类型 redis hash类型使用_User_13



3.3 删除字段
hdel key field [field …](可以删除一个或多个字段,返回值是被删除的字段个数)

redis中的hash类型 redis hash类型使用_赋值_14



3.4 增加数字
hincrby key field increment(字段值增加指定increment,字段值必须是整数)

redis中的hash类型 redis hash类型使用_User_15



3.5 判断字段是否存在
hexists key field(存在返回1,不存在返回0)

redis中的hash类型 redis hash类型使用_字段_16



3.6 只获取字段名或字段值
hkeys key(只获取字段名)
hvals key(只获取字段值)

redis中的hash类型 redis hash类型使用_赋值_17



3.6 只获取字段数量
hlen key

redis中的hash类型 redis hash类型使用_赋值_18

  1. 应用 用来存储包装类的数据信信。例如存储商品信息

redis中的hash类型 redis hash类型使用_赋值_19

存储商品信息

redis中的hash类型 redis hash类型使用_字段_20




获取商品信息

redis中的hash类型 redis hash类型使用_赋值_21