zoukankan      html  css  js  c++  java
  • 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!

  • 相关阅读:
    luogu 1726 上白泽惠音
    POJ1419 Graph Coloring(最大独立集)(最大团)
    POJ2284 That Nice Euler Circuit (欧拉公式)(计算几何 线段相交问题)
    POJ 1966 Cable TV Network(顶点连通度的求解)
    POJ 1523 SPF(寻找关节点)
    Dwarves (有向图判环)
    POJ 3041 Asteroids(最小点覆盖集)
    POJ 1043 What's In A Name?(唯一的最大匹配方法)
    POJ Girls and Boys (最大独立点集)
    Jewelry Exhibition(最小点覆盖集)
  • 原文地址:https://www.cnblogs.com/gygg/p/13668408.html
Copyright © 2011-2022 走看看