redis如何取hash的值

 更新时间:2023年01月18日 14:12:16   作者:田湖_怎么了  
这篇文章主要介绍了redis如何取hash的值问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

redis取hash的值

命令:可以取得对应的hash中的具体值

hmget s_account:208 account accountname

结果:“www”

如图

命令:取得hash中的所有key

hkeys s_account:208

结果:

redis中存值是Hash冲突如何解决

Redis 中的 Hash和 Java的 HashMap 更加相似,都是数组+链表的结构.当发生 hash 碰撞时将会把元素追加到链表上

我们先来了解下 hash 的内部结构.第一维是数组,第二维是链表.组成一个 hashtable.

在 Java 中 HashMap 扩容是个很耗时的操作,需要去申请新的数组,扩容的成本并不低,因为需要遍历一个时间复杂度为O(n)的数组,并且为其中的每个enrty进行hash计算。加入到新数组中

为了追求高性能,Redis 采用了渐进式 rehash 策略.这也是 hash 中最重要的部分.

redis在扩容的时候执行 rehash 策略会保留新旧两个 hashtable 结构,查询时也会同时查询两个 hashtable.Redis会将旧 hashtable 中的内容一点一点的迁移到新的 hashtable 中,当迁移完成时,就会用新的 hashtable 取代之前的.当 hashtable 移除了最后一个元素之后,这个数据结构将会被删除.

数据搬迁的操作放在 hash 的后续指令中,也就是来自客户端对 hash 的指令操作.一旦客户端后续没有指令操作这个 hash.Redis就会使用定时任务对数据主动搬迁.

正常情况下,当 hashtable 中元素的个数等于数组的长度时,就会开始扩容,扩容的新数组是原数组大小的 2 倍.如果 Redis 正在做 bgsave(持久化) 时,可能不会去扩容,因为要减少内存页的过多分离(Copy On Write).但是如果 hashtable 已经非常满了,元素的个数达到了数组长度的 5 倍时,Redis 会强制扩容.

当hashtable 中元素逐渐变少时,Redis 会进行缩容来减少空间占用,并且缩容不会受 bgsave 的影响,缩容条件是元素个数少于数组长度的 10%.

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Redis实现多级缓存

    Redis实现多级缓存

    这篇文章主要为大家详细介绍了Redis实现多级缓存,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • 查看redis的缓存时间方式

    查看redis的缓存时间方式

    这篇文章主要介绍了查看redis的缓存时间方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-03-03
  • Redis序列化设置以及jetcache连接Redis序列化的设置过程

    Redis序列化设置以及jetcache连接Redis序列化的设置过程

    这篇文章主要介绍了Redis序列化设置以及jetcache连接Redis序列化的设置过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Redis特殊数据类型bitmap位图

    Redis特殊数据类型bitmap位图

    这篇文章主要为大家介绍了Redis特殊数据类型bitmap位图,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • 使用Redis存储SpringBoot项目中Session的详细步骤

    使用Redis存储SpringBoot项目中Session的详细步骤

    在开发Spring Boot项目时,我们通常会遇到如何高效管理Session的问题,默认情况下,Spring Boot会将Session存储在内存中,今天,我们将学习如何将Session存储从内存切换到Redis,并验证配置是否成功,需要的朋友可以参考下
    2024-06-06
  • 你了解Redis事务吗

    你了解Redis事务吗

    说到事务,大家会立刻想到Mysql的事务,所谓的事务就是对数据进行一系列的操作,要么都执行成功,要么都执行失败,下面就介绍一下Redis如何实现事务,感兴趣的可以了解一下
    2022-08-08
  • 一文详解Redis的主从同步原理

    一文详解Redis的主从同步原理

    Redis为了保证服务高可用,其中一种实现就是主从模式,本篇文章将对主从模式中为了保证主节点和从节点数据一致而实现的主从同步机制进行学习,感兴趣的同学可以参考阅读下
    2023-07-07
  • 深入了解Redis的看门狗机制

    深入了解Redis的看门狗机制

    Redis锁的延期机制,通常被称为看门狗机制,本文就拉介绍一下Redis的看门狗机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • springboot中操作redis实例分享

    springboot中操作redis实例分享

    本文介绍了如何在Spring Boot应用中整合Redis缓存技术,包括配置Redis连接、定义Redis模板、实现Redis的基本操作以及使用Spring Cache注解。这些内容可帮助开发者快速掌握Spring Boot与Redis的集成,并提高应用性能。
    2023-06-06
  • Redis MGET命令深度解析

    Redis MGET命令深度解析

    Redis的MGET命令是一种高效的批量读取操作,可以显著提高读取性能,减少网络往返的次数,本文从MGET命令的机制实现、底层原理、应用场景及性能优化等多个维度,深入解析Redis中的MGET命令的工作方式,并对它与其他批量操作命令的对比进行了详细介绍
    2024-09-09

最新评论