iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Redis中热点Key如何产生的
  • 898
分享到

Redis中热点Key如何产生的

2024-04-02 19:04:59 898人浏览 独家记忆
摘要

这篇文章主要介绍了Redis中热点Key如何产生的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。热点Key产生的原因1、用户消费的数据远大于

这篇文章主要介绍了Redis中热点Key如何产生的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

热点Key产生的原因

1、用户消费的数据远大于生产的数据

热key问题就是某个瞬间有大量的请求去访问redis上某个固定的key,导致缓存击穿,请求都打到了DB上,压垮了缓存服务和DB服务,从而影响到应用服务可用的可用性。

最常见的就是微博的热搜,比如XX明星结婚/出轨。那么关于XX明星的Key就会瞬间增大,就会出现热数据问题。微博也时不时的来个崩溃。

同理,被大量刊发、浏览的热点新闻、热点评论、明星直播等,这些典型的读多写少的场景也会产生热点问题。

2、请求分片集中,超过单Server的性能极限

在服务端读数据进行访问时,往往会对数据进行分片切分,此过程中会在某一主机 Server上对相应的Key进行访问,当访问超过Server极限时,就会导致热点Key问题的产生。

热点Key问题的危害

Redis中热点Key如何产生的

1、流量集中,达到物理网卡上限。

当某一热点 Key 的请求在某一主机上超过该主机网卡上限时,由于流量的过度集中,会导致服务器中其它服务无法进行。

2、请求过多,缓存分片服务被打垮。

如果热点过于集中,热点 Key 的缓存过多,超过目前的缓存容量时,就会导致缓存分片服务被打垮现象的产生。

3、DB 击穿,引起业务雪崩。

当缓存服务崩溃后,此时再有请求产生,会缓存到后台 DB 上,由于DB 本身性能较弱,在面临大请求时很容易发生请求穿透现象,会进一步导致雪崩现象,严重影响设备的性能。

热点key的发现

1、凭借业务经验,进行预估哪些是热key

其实这个方法还是挺有可行性的。比如某商品在做秒杀,那这个商品的key就可以判断出是热key。缺点很明显,并非所有业务都能预估出哪些key是热key。

2、在客户端进行收集

这个方式就是在操作redis之前,加入一行代码进行数据统计。那么这个数据统计的方式有很多种,也可以是给外部的通讯系统发送一个通知信息。缺点就是对客户端代码造成入侵。

3、在Proxy层做收集

client

proxy

redis1

redis2

redis3

有些集群架构是下面这样的,Proxy可以是Twemproxy,是统一的入口。可以在Proxy层做收集上报,但是缺点很明显,并非所有的redis集群架构都有proxy。

4、用redis自带命令

  • monitor命令:该命令可以实时抓取出redis服务器接收到的命令,然后写代码统计出热key是啥。当然,也有现成的分析工具可以给你使用,比如redis-faina。但是该命令在高并发的条件下,有内存增暴增的隐患,还会降低redis的性能。

  • hotkeys参数:redis 4.0.3提供了redis-cli的热点key发现功能,执行redis-cli时加上–hoTKEys选项即可。但是该参数在执行的时候,如果key比较多,执行起来比较慢。

5、自己抓包评估

Redis客户端使用tcp协议与服务端进行交互,通信协议采用的是RESP。自己写程序监听端口,按照RESP协议规则解析数据,进行分析。缺点就是开发成本高,维护困难,有丢包可能性。

以上五种方案,各有优缺点。根据自己业务场景进行抉择即可。

热点Key的解决方案

1、利用二级缓存

比如利用ehcachespring cache,甚至是一个HashMap都可以。在你发现热key以后,把热key加载到系统的JVM中。

针对这种热key请求,会直接从jvm中取,而不会走到redis层。

假设此时有十万个针对同一个key的请求过来,如果没有本地缓存,这十万个请求就直接怼到同一台redis上了。
现在假设,你的应用层有50台机器,OK,你也有jvm缓存了。这十万个请求平均分散开来,每个机器有2000个请求,会从JVM中取到value值,然后返回数据。避免了十万个请求怼到同一台redis上的情形。

2、读写分离

读写分离就是将同为 Write 的请求发送到 Master 模块内,而将 Read 的请求发送至 ReadOnly 模块。

而模块中的只读节点还可以进一步扩充,把这个key,在多个redis上都存一份不。有热key请求进来的时候,我们就在有备份的redis上随机选取一台,进行访问取值,返回数据。从而有效解决热点读的问题。

读写分离同时具有可以灵活扩容读热点能力、可以存储大量热点Key、对客户端友好等优点。

感谢你能够认真阅读完这篇文章,希望小编分享的“Redis中热点Key如何产生的”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网数据库频道,更多相关知识等着你来学习!

您可能感兴趣的文档:

--结束END--

本文标题: Redis中热点Key如何产生的

本文链接: https://www.lsjlt.com/news/61121.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Redis中热点Key如何产生的
    这篇文章主要介绍了Redis中热点Key如何产生的,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。热点Key产生的原因1、用户消费的数据远大于...
    99+
    2024-04-02
  • Redis中热点key存储问题怎么解决
    今天小编给大家分享一下Redis中热点key存储问题怎么解决的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2024-04-02
  • Redis什么是热Key问题以及如何解决热Key问题
    目录一、什么是热Key?二、热Key产生的原因?三、热点Key的危害?四、如何识别热点Key?五、如何解决热Key问题?一、什么是热Key? 在Redis中,我们把访问频率高的Key,称为热Key。 比如突然又几十万的请...
    99+
    2022-11-18
    Redis热Key 解决热Key问题 Redis什么是热Key
  • redis中热key问题的解决方法
    这篇文章主要介绍了redis中热key问题的解决方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。正文热Key问题上面提到,所谓热key问题...
    99+
    2024-04-02
  • redis如何保证热点数据
    redis 通过以下技术措施保证热点数据的存取效率和持久性:数据结构优化:哈希表和跳跃表内存分配优化:内存分片和对象惰性删除持久化策略:rdb 快照和 aof 日志复制和哨兵:复制和哨兵...
    99+
    2024-04-20
    redis 并发访问 数据丢失
  • redis热点数据如何配置
    要配置Redis热点数据,可以采取以下几种策略:1. 提高内存容量:增加Redis服务器的内存容量,以容纳更多的热点数据。可以通过修...
    99+
    2023-09-01
    redis
  • redis中的key如何设置
    这篇文章主要介绍了redis中的key如何设置,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。Redis SET命令用于设置给定key的值。如果k...
    99+
    2024-04-02
  • redis如何判断热点数据
    redis 通过慢查询日志、内存取样、模块和第三方工具来判断热点数据。识别出热点数据后,可采取措施减轻其影响,例如使用缓存、数据分片和优化数据结构。 Redis 如何判断热点数据 Re...
    99+
    2024-04-20
    redis 键值对
  • Redis中redis-cluster如何删除指定的key
    这篇文章主要为大家展示了“Redis中redis-cluster如何删除指定的key”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Redis中redis-clu...
    99+
    2024-04-02
  • Redis中key过期如何解决
    这篇文章给大家介绍Redis中key过期如何解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。初步调查受影响的团队和缓存团队开始进行初步的调查。我们发现延迟增加与现在正在发生的key清...
    99+
    2024-04-02
  • 如何在Redis中遍历所有key
    本篇文章给大家分享的是有关如何在Redis中遍历所有key,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。当我们需要遍历Redis所有key或者指定模式的key时,首先想到的是K...
    99+
    2023-06-14
  • 数据库中如何查询热点快和热点块的操作
    这篇文章主要介绍数据库中如何查询热点快和热点块的操作,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! ---查询热块对象sql语句:  SELE...
    99+
    2024-04-02
  • redis如何监控失效的key
    小编给大家分享一下redis如何监控失效的key,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!先来看一个问题:如何处理订单过期自动取消,比如下单30分钟未支付自动更改订单状态?解决方案:可以利...
    99+
    2024-04-02
  • Redis中什么是Big Key(大key)问题?如何解决Big Key问题?
    目录一、什么是Big Key二、Big Key产生的场景?三、Big Key的危害?四、如何识别Big Key?五、如何解决Big Key问题?补充知识:key设计总结一、什么是Bi...
    99+
    2023-03-15
    redis big keys redis大key问题 redis大key优化
  • Redis中什么是Big Key(大key)问题?如何解决Big Key问题?
    目录一、什么是Big Key二、Big Key产生的场景?三、Big Key的危害?四、如何识别Big Key?五、如何解决Big Key问题?补充知识:key设计总结一、什么是Big Key 通俗易懂的讲,Big Ke...
    99+
    2023-03-15
    redis big keys redis大key问题 redis大key优化
  • redis如何设置key的有效期
    目录redis设置key的有效期Key命令彻底理解redis有效期问题1.过期时间跟着key走,与值无关2.设置永久有效期3.rename命令对有效期影响4.刷新过期时间5.过期精度...
    99+
    2024-04-02
  • Debian中如何开WI-FI热点
    这篇文章将为大家详细讲解有关Debian中如何开WI-FI热点,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。安装环境操作系统:Debian Gnu/Linux 8.3 内核: linux-image-4....
    99+
    2023-06-27
  • php中如何产生随机数
    这篇文章将为大家详细讲解有关php中如何产生随机数,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。php是什么语言php,一个嵌套的缩写名称,是英文超级文本预处理语言(PHP:Hypertext Prepr...
    99+
    2023-06-15
  • windows中tmp文件是如何产生的
    这篇文章主要介绍“windows中tmp文件是如何产生的”,在日常操作中,相信很多人在windows中tmp文件是如何产生的问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”wi...
    99+
    2023-01-03
    windows tmp文件
  • mysql如何产生死锁的
    这篇文章将为大家详细讲解有关mysql如何产生死锁的,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。mysql中死锁<DeadLock>:是指两个或两个以上的进...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作