• 2019版:第三章:(5)Redis 五大数据类型 之 Hash


    一、Hash 类型

      1、Redis Hash 是一个键值对集合;
      2、Redis Hash 是一个 String 类型的 field 和 value 的映射表, hash 特别适合用于存储对象;
      3、类似 Java 里面的 Map<String, String>;
      4、分析一个问题:现有一个 JavaBean 对象,在 Redis 中如何存?
        方案一:用户 ID 为 key, value 为 JavaBean 序列化后的字符串
        

         缺点:每次修改用户的某个属性需要,先反序列化改好后再序列化回去,开销较大。

        方案二:用户 ID + 属性名作为 key,属性值作为 Value
        

        缺点:用户 ID数据冗余

        方案三:通过 key(用户ID)+ field(属性标签)就可以操作对应属性数据了,既不需要重复存储数据,也不会带来序列化和并发修改控制的问题。
        

    二、常用操作

    hset <key> <field> <value> 从 <key> 集合中的 <field> 键赋值 <value>
    hget <key1> <field> 从 <key1> 集合 <field> 取出 value
    hmset <key1> <field1><value2><field2><value2>... 批量设置  hash 的值
    hexists key <field> 查看哈希表 key 中,给定域 field 是否存在
    hkeys <key> 列出该 hash  集合的所有 field
    hvals <key> 列出该 hash 集合的所有 value 
    hgetall 获取所有的键值
    hincrby <key> <field> <increment> 为哈希表 key 中的域 field 的值加上增量 increment
    hsetnx <key> <field> <value> 将哈希表 key 中的域 field 的值设置为 value,当且仅当域 field 不存在
  • 相关阅读:
    【BZOJ 3144】 [Hnoi2013]切糕
    【BZOJ 1095】 [ZJOI2007]Hide 捉迷藏
    【BZOJ 4016】[FJOI2014]最短路径树问题
    【BZOJ 2152】 聪聪可可
    【BZOJ 1095】 [ZJOI2007]Hide 捉迷藏 括号序列
    【BZOJ 3196】 Tyvj 1730 二逼平衡树 分块
    【BZOJ 2038】 [2009国家集训队]小Z的袜子(hose)
    【BZOJ 3196】 Tyvj 1730 二逼平衡树
    接下来的事
    【BZOJ 1189】 [HNOI2007]紧急疏散evacuate
  • 原文地址:https://www.cnblogs.com/niujifei/p/15792361.html
Copyright © 2020-2023  润新知