Redis哈希Hash键值对集合操作(查询增加修改)

 更新时间:2024年01月23日 11:08:29   作者:韩曙亮  
Redis中的Hash数据 是一个 键值对集合,本文主要介绍了Redis哈希Hash键值对集合操作(查询增加修改),具有一定的参考价值,感兴趣的可以了解一下

一、哈希 Hash 键值对集合

Redis 中的 Hash 数据 是一个 键值对集合 , 类似于 Java 中的 Map 集合 ;

Hash 数据底层数据结构是 :

  • 压缩列表 ZipList : Hash 中的 键值对 长度较短时 使用 压缩列表 ;
  • 哈希表 HashTable : Hash 中的 键值对 长度较长时 使用 哈希表 ;

Redis 中存储对象的方式 :

  • 存储序列化之后的数据 : 将 对象 序列化为 json 字符串 , 然后 存储到 Redis 键值对 的 Value 值中 ;

    • 如果要修改对象中的数据 , 要 先将对象反序列化 , 然后修改对象中的值 , 最后将对象序列化并保存 ;
  • 直接存储对象字段 : 将每个对象的字段拆开 , 进行分开存储 , 非常繁琐 ;

    • 每个 Redis 的 键 都保存一个 对象字段 , 一个对象可能要消耗多个 键 ;
  • 使用 Hash 存储 ( 推荐 ) : 将 对象 的 字段 , 都以 Hash 的 键值对 形式存储起来 , 可以直接访问修改对应的对象字段 ;

    • 每个 Redis 键 保存一个对象 , 对象的属性 由 Hash 键值对 保存 ;

键值对区分 : Redis 中的键值对 一般称为 Key=Value , 在 Hash 中的键值对 一般称为 Field=Value ;

二、查询操作

1、Redis 中查询 Hash 键值对数据

执行

hget student name

命令 , 可以 获取 Redis 中 student 键 对应的 Hash 数据中的 name 键 对应的 值 ;

代码示例 :

127.0.0.1:6379> hset student name Tom
(integer) 1
127.0.0.1:6379> get student
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> hget student
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hget student name
"Tom"
127.0.0.1:6379>

在这里插入图片描述

注意 : 读取该 Hash 的 name=Tom 键值对 时 , 需要使用 hget student name 命令 ;

2、查询 Hash 键是否存在

执行

hexists student name

命令 , 可以 获取 Redis 中 student 键 对应的 Hash 数据中的 name 键 是否存在 ;

  • 如果存在 , 返回 1 ;
  • 如果不存在 , 返回 0 ;

代码示例 :

127.0.0.1:6379> hexists student name
(integer) 1
127.0.0.1:6379> hexists student name1
(integer) 0
127.0.0.1:6379>

在这里插入图片描述

3、查询 Hash 中所有的键 Field

执行

hkeys student

命令 , 可以 获取 Redis 中 student 键 对应的 Hash 数据中的 所有 键 Field ;

代码示例 :

127.0.0.1:6379> hkeys student
1) "name"
2) "age"
127.0.0.1:6379>

在这里插入图片描述

4、查询 Hash 中所有的值

执行

hvals student

命令 , 可以 获取 Redis 中 student 键 对应的 Hash 数据中的 所有 值 ;

代码示例 :

127.0.0.1:6379>
127.0.0.1:6379> hvals student
1) "Tom"
2) "18"
127.0.0.1:6379>

在这里插入图片描述

三、增加操作

1、Redis 中插入 Hash 键值对数据

执行

hset student name Tom

命令 , 可以 给 键 student 中的 Hash 数据值 中 添加 name=Tom 键值对 ;

代码示例 : 向 Redis 的 student 键值 下 插入 name=Tom 键值对 ;

127.0.0.1:6379> hset student name Tom
(integer) 1
127.0.0.1:6379> get student
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> hget student
(error) ERR wrong number of arguments for 'hget' command
127.0.0.1:6379> hget student name
"Tom"
127.0.0.1:6379>

在这里插入图片描述

注意 : 读取该 Hash 的 name=Tom 键值对 时 , 需要使用 hget student name 命令 ;

2、批量插入 Hash 键值对数据

执行

hmset student name Tom age 18

命令 , 可以 给 键 student 中的 Hash 数据值 中 添加 name=Tom 和 age=18 键值对 ;

代码示例 : 向 Redis 的 student 键值 下 插入 name=Tom 和 age=18 键值对 ;

127.0.0.1:6379> hmset student name Tom age 18
OK
127.0.0.1:6379> hget student age
"18"
127.0.0.1:6379> hget student name
"Tom"
127.0.0.1:6379>

在这里插入图片描述

四、修改操作

1、Hash 中 Field 键对应值增减值

执行

hincrby student age -5

命令 , 可以 给 键 student 中的 Hash 数据值 中 age=18 数据中的值 -5 操作 ;

代码示例 :

127.0.0.1:6379>
127.0.0.1:6379> hincrby student age -5
(integer) 13
127.0.0.1:6379> hvals student
1) "Tom"
2) "13"
127.0.0.1:6379>

在这里插入图片描述

2、设置 Hash 中 Field 键对应值

执行

hsetnx student weight 85

命令 , 可以 在 键 student 中的 Hash 数据值 中 如果不存在 weight 键 , 则 添加 weight=85 键值对数据 ;

代码示例 :

127.0.0.1:6379>
127.0.0.1:6379> hsetnx student weight 85
(integer) 1
127.0.0.1:6379> hkeys student
1) "name"
2) "age"
3) "weight"
127.0.0.1:6379>

在这里插入图片描述

到此这篇关于Redis哈希Hash键值对集合操作(查询增加修改)的文章就介绍到这了,更多相关Redis Hash键值操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析redis cluster介绍与gossip协议

    浅析redis cluster介绍与gossip协议

    这篇文章主要介绍了redis cluster介绍与gossip协议,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Redis字典实现、Hash键冲突及渐进式rehash详解

    Redis字典实现、Hash键冲突及渐进式rehash详解

    这篇文章主要介绍了Redis字典实现、Hash键冲突以及渐进式rehash的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • SpringBoot集成redis错误问题及解决方法

    SpringBoot集成redis错误问题及解决方法

    这篇文章主要介绍了SpringBoot集成redis错误问题,本文给大家分享完美解决方法,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Redis为什么要存两次数据

    Redis为什么要存两次数据

    这篇文章主要介绍了Redis为什么要存两次数据的相关资料,需要的朋友可以参考下
    2021-02-02
  • Redis解决优惠券秒杀应用案例

    Redis解决优惠券秒杀应用案例

    这篇文章主要介绍了Redis解决优惠券秒杀应用案例,本文先讲了抢购问题,指出其中会出现的多线程问题,提出解决方案采用悲观锁和乐观锁两种方式进行实现,然后发现在抢购过程中容易出现一人多单现象,需要的朋友可以参考下
    2022-11-11
  • 详解Redis中key的命名规范和值的命名规范

    详解Redis中key的命名规范和值的命名规范

    这篇文章主要介绍了详解Redis中key的命名规范和值的命名规范,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-12-12
  • 详解redis desktop manager安装及连接方式

    详解redis desktop manager安装及连接方式

    这篇文章主要介绍了redis desktop manager安装及连接方式,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • Redisson分布式锁之加解锁详解

    Redisson分布式锁之加解锁详解

    这篇文章主要为大家介绍了Redisson分布式锁加解锁的详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • SpringSession+Redis实现集群会话共享的方法

    SpringSession+Redis实现集群会话共享的方法

    为了保证WEB应用的承载能力, 需要对WEB应用进行集群处理.这篇文章主要介绍了SpringSession+Redis实现集群会话共享的方法,需要的朋友参考下吧
    2018-08-08
  • Redis内存碎片率调优处理方式

    Redis内存碎片率调优处理方式

    Redis集群因内存碎片率超过1.5触发告警,分析发现内因与外因导致内存碎片,内因为操作系统内存分配机制,外因为Redis操作特性,使用Redis内置内存碎片清理机制可有效降低碎片率,但需注意可能影响性能,建议使用MEMORY命令诊断内存使用情况,合理配置参数以优化性能
    2024-09-09

最新评论