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!

  • 相关阅读:
    Android.mk添加第三方jar包
    关于回调函数
    Ubuntu下GIT服务器的安装与配置
    三星I9100在Ubuntu下用Adb调试
    Android检测网络是否可用和主机是否可达
    keepalived配置文件解析系列之(一)keepalived简介及配置文件介绍
    keepalived配置文件解析系列之(三)配置文件解析过程
    C语言中的位域(bitfield)概念
    popen和变长参数库函数(va_xxx)用法举例及命令执行失败情况探讨
    《深入理解Linux内核》条目式笔记 _3
  • 原文地址:https://www.cnblogs.com/gygg/p/13668408.html
Copyright © 2011-2022 走看看