Redis学习第二天

本文介绍了Redis中的哈希数据结构,包括其概念、字段与值的对应关系,以及HSET、HGET、HSETNX等操作命令。强调了哈希在存储结构清晰、高效更新和节省空间方面的优势,同时提到了与键值存储系统的查询限制。
摘要由CSDN通过智能技术生成

作者晚上偷懒没去图书馆,可能学的不多,明天多学一点叭!

图中左边是key,右边是value,其类型为hash。这里老师讲的很乱,没有任何参考性,作者自学:

Redis 中的 hash 是一种数据结构,用于存储键值对(key-value pairs)。在许多编程语言中,这种数据结构通常被称为“字典”、“哈希图”或“映射”。在 Redis 的语境中,当我们说到 hash,我们是指它存储的是一组字段(field)和值(value)的对应关系

这里,先澄清几个概念:

  1. Key:在 Redis 中,每个存储的数据结构(无论是字符串、列表、集合还是哈希)都有一个独立的 key。
  2. Hash:这是指定 key 下的数据结构。一旦你确定了一个 key 为 hash 类型,那么你可以在这个 hash 下设置多个字段-值对。
  3. Field:这是 hash 数据结构中的一个子键。每个 field 都有一个与之相关联的值。
  4. Value:这是与 hash 中的特定 field 关联的值。

一个 Redis hash 可以被视为一个“内部字典”,其中 key 是 hash 的名称,每个 hash 可以包含多个字段和值对。

例如,假设你想在 Redis 中存储一个用户的信息,其中用户名为 "user123",该用户有名字、年龄和邮箱等属性。你可以使用 Redis 的 hash 数据结构如下:

HSET user123 "name" "John Doe"
HSET user123 "age" "30"
HSET user123 "email" "johndoe@example.com"

在上面的例子中:

  • user123 是 Redis 的 key,对应的数据结构是一个 hash。
  • name, age, email 是 hash 中的 fields。
  • John Doe, 30, johndoe@example.com 是与这些 fields 关联的 values。

使用 HGET 命令,你可以检索这些值,例如:HGET user123 name 会返回 John Doe

因此,可以说 Redis 中的 hash 是 value 的一种类型,用于存储多个字段和值对。这样的结构允许你在一个 key 下存储多个相关的信息,而无需为每个信息创建新的 key。这非常适用于组织和管理相关数据,例如用户的属性或对象的属性

Redis 的 hash 数据结构非常适合模拟类似Java 对象的结构。将一个 Java 对象存储在 Redis 中时,可以使用以下策略:

  • 对象 ID 作为 key:如果你有一个 User 对象,那么你可以使用该用户的唯一 ID(如 userID)作为 Redis 中的 key

  • 对象的属性作为 field:例如,User 对象可能有 nameemailpassword 等属性,这些属性都可以作为 Redis hash 中的 field

  • 对象的属性值作为 value:对于上面提到的 nameemail 等属性,其相应的值可以存储为 Redis hash 中的 value。

这种方式在 Redis 中存储对象有以下好处:

  1. 结构清晰:使用 Redis hash 存储对象使得数据的组织更加清晰和直观。
  2. 高效的局部更新:如果只需要更新对象的某个属性,你可以直接定位到该 hash 的特定 field 进行更新,而不是替换整个对象。
  3. 节省空间:相比于为对象的每个属性创建单独的 key,使用 hash 可以更有效地利用存储空间。

但要注意,Redis 是一个键值存储系统,所以它不提供像关系数据库中的复杂查询功能。因此,在选择如何存储数据时,你应考虑到你的查询和访问模式。

ziplist压缩列表:内存中一段连续的空间。

这个哈希表就是数据结构中的哈希表,中心思想就是长度等于个数,然后取模运算,重复的就跳,跳的方式有很多,123跳或者1、-1、2这样跳,为的就是减少空间浪费。

Redis采用链表地址法!哈希函数解决字符串问题!

redis,启动!

老师讲的糊里糊涂的,状态不好。

HSETNX 是 Redis hash 数据结构中的一个命令。它的名字是 "Hash SET if Not eXists" 的缩写,意思是仅在指定的 field 不存在时,该句才会发挥作用设置该 field 的值。但是if Not eXists都只能带一个参数。

hdel是删除某个key的某个、某些字段,而del是直接删除某个key。注意:当某个key没有hash键值对的时候,这个key的整个存储结构都会丢失。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Joy T

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

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

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

打赏作者

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

抵扣说明:

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

余额充值