Redis常见数据类型二:Hash

hash类型

1、新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息

2、需要的存储结构:一个存储空间保存多个键值对数据

3、hash类型:底层使用哈希表结构实现数据存储

hash存储结构优化

  • 如果field(字段)数量较少,存储结构优化为类数组结构。
  • 如果field数量较多,存储结构使用HashMap结构。

hash类型数据的操作

单条数据操作

添加/修改数据

添加和修改的格式都是:hset key field value

获取数据

格式:hget key field

删除数据

格式:hdel key field

多条数据操作

添加/修改多条数据

格式:hmset key field value field1 value1

获取多条数据

格式:hmget key field field1

扩展操作

获取key的全部值

格式:hgetall key

获取key的值的数量

格式:hlen key

是否存在field

格式:hexists key field

所有key的字段

格式:hkeys key

所有key的值

格式:hvals key

为哈希表中的字段值加上指定增量值

格式:hincrby key field num

增量也可以为负数,相当于对指定字段进行减法操作。

如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。

如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

对一个储存字符串值的字段执行 HINCRBY 命令将造成一个错误。

本操作的值被限制在 64 位(bit)有符号数字表示之内。

为哈希表中的字段值加上指定浮点数增量值

格式:hincrbyfloat key field num

如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。

为哈希表中不存在的的字段赋值

格式:hsetnx key field value

如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。

如果字段已经存在于哈希表中,操作无效。

如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。

hash 类型数据操作注意事项

hash类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如果数据未获取到, 对应的值为(nil)。

每个 hash 可以存储 2³² - 1 个键值对。

hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。但hash设计初衷不是为了存储大量对象而设计的,切记不可滥用,更不可以将hash作为对象列表使用。

hgetall 操作可以获取全部属性,如果内部field过多,遍历整体数据效率就很会低,有可能成为数据访问瓶颈。

End!

posted @ 2020-10-09 15:52  Wahaha、  阅读(302)  评论(0编辑  收藏  举报