• Redis 哈希( Hash )


    【一】简介 

    Redis hash 是一个键值对集合。

     Redis hash 是一个 string 类型的 field 和 value 的映射表, hash 特别适合用于存储对象。

    类似 Java 里面的 Map < String , Object >

     用户 ID 为查找的 key ,存储的 value 用户对象包含姓名,年龄,生日等信息,如果用普通的 key/value 结构来存储

    主要有以下2种存储方式

    方法一:

            key                        序列化的 value 对象

                            >>>>                姓名数据

    用户 ID         >>>>>>               年龄数据

                            >>>>                生日数据

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

    方法二:

            key                                                   Value

    用户 ID + 姓名标签        >>>>                姓名数据

    用户 ID + 年龄标签        >>>>                年龄数据

    用户 ID + 生日标签        >>>>                生日数据

    用户 ID 数据冗余

    还有第三种:

            key                                               Hash

                                                      field                value

                            >>>>              姓名标签         姓名数据

    用户 ID         >>>>>>             年龄标签         年龄数据

                            >>>>              生日标签         生日数据

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

    【二】常用命令

     hset

    集合中的 键赋值

     hget

    集合中取出 对应的 value

     hmset ...

    批量设置 hash 的值

     hexists

    查看 中是否存在

     hkeys

    列出该 hash 集合所有 field

     hvals

    列出该 hash 集合中所有的 value

     hincrby

    哈希表  中的域  的值加上增量 1 -1

     hsetnx

    将哈希表  中的域 field 的值设置为 value ,当且仅当域 field 不存在

    【三】数据结构

     Hash 类型对应的数据结构是两种: ziplist (压缩列表), hashtable (哈希表)。当 field-value 长度较短且个数较少时,使用 ziplist ,否则使用 hashtable。

  • 相关阅读:
    Oracle将GraalVM社区版源码贡献给了OpenJDK
    (一)大白话MySQL执行SQL的流程
    Request&Response有这一篇就够了
    APP产品经理的主要内容(合集)
    支持代理直连Oracle数据库,JumpServer堡垒机v2.24.0发布
    redis发布订阅模式
    基于单片机的高精度超声波测距系统研究
    60、回溯-单词搜索
    LCP 06. 拿硬币【向上取整】
    关于类之间赋值时生成零时对象并调用析构函数的时机
  • 原文地址:https://blog.csdn.net/FairyKunKun/article/details/127864036