5.2.3Redis的数据类型 --hash

总目录:https://blog.csdn.net/qq_41106844/article/details/105553392

数据库子目录:https://blog.csdn.net/qq_41106844/article/details/105553331

 

hash

我们说回上一节中存储大V信息的例子,如果使用第一种方式:

 

 
20155953-2debafa199f4b6e0.png
第一种方式

 

 

存储过于分散,不易管理。
如果使用第二种方式:

 

 

 
20155953-98352277dc4278ef.png
第二种方式


数据整体成了一个数据类型,进行修改的话,受到了限制。

 

第一种方式虽然过于分散,但是有着唯一的标识,既表:id:id的值,不同的只是后面的字段名与数据,那么就可以通过hash表的存储方式:

 

 
20155953-d2bcf7150aea4602.png
hash存储

 

这样就可以轻便的管理这堆数据。
关于什么是哈希:哈希表

hash类型

  • 新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息。
  • 需要的存储结构,一个存储空间保存多个键值对数据
  • hash类型:底层使用hash表实现数据存储
  • 存储结构优化:field较少时,是一个类数组的存储结构,较多时,是一个hashmap的存储结构

基础操作

  • 添加/修改数据
    hset key field value

  • 获取数据
    hget key field
    hgetall key

  • 删除数据
    hdel key field1 [field2]

 
20155953-ae258907027c1267.png
示意
  • 添加/修改多条数据
    hmset key field1 value1 field2 value2 ...

  • 获取多条数据
    hmget key field1 field2 ...

  • 获取hash表中field的数量
    hlen key

  • 判断hash表中是否有指定field
    hexists key field

     
     
    20155953-091c7b51803e728b.png
    示意

扩展操作

  • 获取哈希表内所有的字段名或值
    hkeys user
    hvals user

     
     
    20155953-1ab4697554c09fd0.png
    示意
  • 设置指定字段的数值增加指定的范围
    hincyby key field increment
    hincybyfloat key field increment

     
     
    20155953-664d12c6e0cc5791.png
    示意

注意事项

  • 禁止套娃,hash里面不能存hash。
  • 每个hash可以存232-1个键值对
  • hash的设计初衷不是用来存储大量数据的,不要滥用hash,更不可将hash作为对象列表使用。
  • hgenall操作,如果获取的field过多,会有瓶颈。

应用场景1

电商网站购物车设计。

 

 
20155953-fabf6ec5bedb0d4b.png
示意

 

解决方案

  • 以用户id作为key,每位用户创建一个hash存储结构存储其购物车信息。
  • 以商品编号作为field,商品数量作为value存储
  • 添加商品:追加全新的field和value
  • 浏览:遍历hash
  • 更改数量:自增自减,设置value值
  • 删除商品:删除field
  • 清空:删除key

     
     
    20155953-5bd166f366d71574.png
    简单示意

但是这样的存储真的加快了购物车的操作嘛?
我们从redis获取数据后,还需要去数据库进行二次核验,这样显然还不如直接存放数据库。
那么有什么优化方案:

  • 每条购物车里的商品信息保存成两条field
  • field1用来保存商品购买数量
    商品id:nums:购买数量
  • field2用来保存保存其他信息,图片地址,商家信息,文字描述等
    商品id:info:[...] value使用json的信息保存
 
20155953-db79f89d6a4bfdbd.png
示意

也可以在升级一步,将商品信息单独使用一个hash表。

同时还有一个命令:
hsetnx key field value
他的功能类似于hget 但是只能增加,不能修改。他可以用来进行商品的添加。

应用场景2

抢购,秒杀活动。

 

 
20155953-7cdbb14ca7f71137.png
示意

 

解决方案

  • 以商家id作为key
  • 将参与抢购的商品id作为field
  • 将参与抢购的商品数量作为value
  • 采购时采用降值的方式控制商品数量
 
20155953-75fbf70481a41d4f.png
示意

hash类型和string类型(存储json)来比较,hash更适合存放动态数据,用来频繁的进行交互;string类型更适合存放一些静态数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
VNC是一种远程桌面控制软件,能够在不同的计算机之间进行远程访问和控制。VNC-5.2.3是VNC的一个具体版本,以下是关于VNC-5.2.3的使用指南: 1. 下载和安装:首先,你需要从VNC官方网站或其他可靠的下载源下载VNC-5.2.3的安装程序。下载完成后,运行安装程序,按照安装向导的指示完成软件的安装。 2. 配置和设置:安装完成后,打开VNC-5.2.3并进行一些基本设置。你可以选择启用密码验证以保护你的远程访问,也可以配置VNC服务器的端口号。 3. 开启VNC服务器:要开始使用VNC-5.2.3,你需要开启VNC服务器。进入VNC-5.2.3的设置界面,找到启动或开启VNC服务器的选项,并点击启动。 4. 进行远程连接:在另一台计算机上,打开VNC客户端程序(通常是VNC Viewer)。在VNC Viewer中输入VNC服务器的IP地址和端口号,然后点击连接。 5. 输入密码:如果在设置中开启了密码验证,VNC Viewer会要求输入密码以进行身份验证。输入正确的密码后,连接将建立起来,你就可以远程访问和控制VNC服务器的桌面了。 6. 控制远程桌面:使用VNC Viewer,你可以远程操控VNC服务器的桌面,就像在本地操作一样。你可以打开应用程序,访问文件等等。 7. 断开连接:当你完成使用后,可以选择断开连接。在VNC Viewer中,点击断开连接按钮即可断开与VNC服务器的连接。 综上所述,VNC-5.2.3非常便于在不同计算机之间进行远程桌面控制。只需下载安装软件,进行一些基本设置,开启VNC服务器,然后使用VNC Viewer连接并控制远程计算机的桌面。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值