【地铁上的Redis与C#】数据类型(五)--Hash类型
2023-06-13 09:16:40 时间
前面我们学习了数据类型中的string类型,一般来说我们在开发中常用的就是string类型,但是它并不是万能的,string类型存在一个问题,下面我们就通过这问题来引出我们的要学习的新类型hash类型。
存在的问题
对象类数据(例如User、Employee)的存储如果使用string类型存储的话,当出现频繁更新操作的情况下会显得笨重,而且多条数据聚合不方便(例如姓名、出生日期、地址如果要入局)。如果用json的方式存储的话,每次修改一个属性时都需要把整个数据取出来修改。那么我们该怎么办呢 ?我们可以key不变,但是value中按照field:vlaue 的形式存储,其中field是属性名,value是属性值。把这个解决方法转化成图就是这样的:
上图这种存储方式就是hash类型的存储方式。
hash类型
- 为什么会出现hash类型:因为要对一系列存储的数据进行编组,方便管理,比较典型的应用场景就是存储对象信息。
- hash类型的存储结构:一个存储空间保存多个键值对数据,如下图所示:
- 什么是hash类型:底层使用hash表结构实现存储数据的类型
- hash类型所作的存储优化:
- 当field数据量较少时,存储结构优化为数组结构;
- 当field数据量较多时,存储结构有华为hashmap结构。
基本操作
在这一小节我们就来讲一下hash类型的基本操作。
- 添加/修改数据,使用 hset,语法为haset key field value,例如设置user存储name的值为anna,可以这么写命令
hset user name anna
- 获取数据,使用hget,语法为hget key field,例如设置获取user中存储的name的值,命令这么写
hget user name
- 删除数据,使用hdel,语法为hdel key field1 [field2,…,fieldn],例如删除user中的name,命令这么些写
hdel user name
。 - 添加修改多个数据,使用hmset,语法为hmset key field1 value1 field2 value2,例如在user中添加name和address,命令这么些写
hmset user name anna address XXXX
。 - 获取多个数据,使用hmget,语法为hmget key field1 field2,例如获取user中的name和address的值,命令这么写
hmget user name address
。 - 获取哈希表中字段的数量,使用hlen,语法hlen key,例如获取user中的字段数量,命令这么写
hlen user
- 获取哈希表中是否存在指定的字段,使用hexists,语法hexist key field,例如判断user中是否存在 age字段,命令这么写
hexists user age
,返回1表示存在该字段,返回0表示不存在
小结
这篇文章稍长,核心内容是hash类型的基本操作命令,同时讲解了string类型存储数据的存在的问题,以及hash类型的简介。
相关文章
- 【地铁上的Redis与C#】数据类型(八)--set类型基本操作
- 开启Redis之旅:从数据类型开始(redis类型)
- 型深入浅出Redis:熟悉不同缓存类型的功能和实现(redis缓存类)
- 使用Redis构建多样化数据存储(redis存储类型)
- Linux上Redis的安装与使用(redis安装linux)
- 深入探索Redis:具体模式解析(redis几种模式)
- 深度探索Redis查看所有键值(怎么查看redis全部健)
- 实现微博用Redis促进数据库运维(微博数据库用redis)
- 如何实现有效的Redis并发写入(并发写redis)
- 利用Redis实现快速查询键值对类型(获取redis键类型)
- 中型服务器与Redis搭配优势大(中型服务器和redis)
- 狼与萤火虫两个项目连接Redis(两个项目连接redis)
- 人人都知道Redis分片自动弹性扩展系统(什么是redis分片)
- 缓存多级缓存Redis结合本地缓存实现效率大幅提升(多级缓存redis 本地)
- 深入理解Redis的默认存储类型(redis默认存储类型)
- 教程Redis高级类型视频学习指南(redis 高级类型视频)
- Redis使用必须避免的危险坑(redis需要避免哪些坑)
- 解决Redis集群连接被拒绝的方法(redis集群连接被拒绝)
- 构建Redis集群借助工具类的助力(redis集群的工具类)
- 教你使用Redis队列一步一步走(redis队列使用教程)
- 深入了解Redis的键值类型(redis键名是什么类型)
- Redis配置管理深入优化地址类型的使用(redis配置类地址)
- 解决Redis远程连接主机的窍门(redis 远程连接主机)
- php使用Redis跳表构建快速索引(redis跳表php)
- 型使用Redis订阅深入理解不同类型(redis 订阅 类)
- Redis中获取字段类型的技术分享(redis获取字段类型)
- 从Redis中获取字段类型的技术(redis获取字段类型)
- Redis节点离线报警预警(redis节点掉线通知)