前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis数据类型之Hash哈希类型

Redis数据类型之Hash哈希类型

作者头像
兮动人
发布2021-06-11 15:34:28
4730
发布2021-06-11 15:34:28
举报
文章被收录于专栏:兮动人的博客

2.2. 哈希(Hash)

2.2.1. 简介

  • Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
  • Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)
  • 可以看成具有KEY和VALUE的MAP容器,该类型非常适合于存储值对象的信息, 如:uname,upass,age等。该类型的数据仅占用很少的磁盘空间(相比于JSON)

该类型与java中的object(map)有些类似

2.2.2. Hash命令

赋值语法:

  • HSET KEY FIELD VALUE //为指定的KEY,设定FILD/VALUE
  • HMSET KEY FIELD VALUE [FIELD1,VALUE1]…… 同时将多个 field-value (域-值)对设置到哈希表 key 中。
  • 取值语法: HGET KEY FIELD //获取存储在HASH中的值,根据FIELD得到VALUE HMGET key field[field1] //获取key所有给定字段的值 HGETALL key //返回HASH表中所有的字段和值
  • HKEYS key //获取所有哈希表中的字段
  • HLEN key //获取哈希表中字段的数量
  • type key //查看key类型
  • 全部删除:del key
  • 删除语法: HDEL KEY field1[field2] //删除一个或多个HASH表字段
  • 其它语法: HSETNX key field value 只有在字段 field 不存在时,设置哈希表字段的值
  • HINCRBY key field increment 为哈希表 key 中的指定字段的整数值加上增量 increment 。
  • HINCRBYFLOAT key field increment 为哈希表 key 中的指定字段的浮点数值加上增量 increment 。
  • HEXISTS key field //查看哈希表 key 中,指定的字段是否存在

2.2.3. 应用场景:

Hash的应用场景:(存储一个用户信息对象数据) 1、 常用于存储一个对象 2、 为什么不用string存储一个对象?

  • hash是最接近关系数据库结构的数据类型,可以将数据库一条记录或程序中一个对象转换成hashmap存放在redis中。
  • 用户ID为查找的key,存储的value用户对象包含姓名,年龄,生日等信息,如果用普通的key/value结构来存储,主要有以下2种存储方式:
  • 第一种方式将用户ID作为查找key,把其他信息封装成一个对象以序列化的方式存储,这种方式的缺点是,增加了序列化/反序列化的开销,并且在需要修改其中一项信息时,需要把整个对象取回,并且修改操作需要对并发进行保护,引入CAS等复杂问题。
  • 第二种方法是这个用户信息对象有多少成员就存成多少个key-value对儿,用用户ID+对应属性的名称作为唯一标识来取得对应属性的值,虽然省去了序列化开销和并发问题,但是用户ID为重复存储,如果存在大量这样的数据,内存浪费还是非常可观的。

总结:

Redis提供的Hash很好的解决了这个问题,Redis的Hash实际是内部存储的Value为一个HashMap,并提供了直接存取这个Map成员的接口

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/06/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.2. 哈希(Hash)
    • 2.2.1. 简介
      • 2.2.2. Hash命令
        • 2.2.3. 应用场景:
          • 总结:
      相关产品与服务
      对象存储
      对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档