首页 > 数据库 >Redis热点key大key

Redis热点key大key

时间:2024-05-08 22:46:18浏览次数:26  
标签:key Redis redis Key 分片 上报 热点


一、热点key问题

  1、商品秒杀、热点新闻、热点评论等读多写少的场景,可能会造成一个较大的请求Redis量,这种情况下就会造成热点Key问题。

  2、请求分片集中,超过单台Redis服务器的性能极限。

      手动分片或者custer分片切分,刚好一致性hash落入同一台redis服务器,数据倾斜,如果瞬间访问量过大,超过机器瓶颈。缓存击穿,压垮redis服务器,导致大量请求直接发往后端服务,进一步导致后端服务雪崩。

二、识别热Key

1、凭借个人经验,结合业务场景,判断哪些是热Key。
    比如华为新机发售,那么我们可以判断华为手机这个sku就是热Key。

2、架构或者redis封装,代码记录上报ELK。
    架构层负责上报,定时把收集到的数据上报到统一的服务进行聚合计算,这样我们就可以找到那些热点Key。

3、服务代理层上报。
    如果是在redis前面有一个代理层,那么我们可以在代理层进行收集上报,也是可以找到热点Key。

4、使用redis自带的命令。
    例如monitor、redis-cli加上--hotkeys选项等,不过这种方式执行起来很慢,可能会降低redis的处理请求的性能,慎用。
    monitor命令:可以实时抓取出redis服务器接收到的命令,然后写代码统计出热Key,也有现成的分析工具可以使用。

5、redis节点抓包分析。
    抓包redis的端口和协议,然后写代码进行上报统计。

三、如何解决热Key问题?

1、Redis集群扩容:增加分片副本,分摊客户端发过来的读请求;数据倾斜则需要重新设计key。

2、使用二级缓存,即JVM本地缓存,减少Redis的读请求。
  例如使用Caffeine+redis 实现二级缓存,先从本地缓存中取,取不到再去redis中去取。当然也可以使用其它框架,如ehcache、甚至一个HashMap都可以。

四、大key问题

 

标签:key,Redis,redis,Key,分片,上报,热点
From: https://www.cnblogs.com/rcsy/p/18181080

相关文章

  • Redis的监控指标
    一、内存使用情况  redis-cliinfo#memory1、总内存使用量(80%)。used_memory实际使用内存  used_memory_peak峰值,used_memory_rss系统分配给redis的总内存大小,包含内存碎片。2、内存碎片。mem_fragmentation_ratio=used_memory_rss/used_memory    <1表示Redi......
  • 5个.Net版本 Redis 客户端开源库
    Redis作为一个高性能(NOSQL)的key-value数据库,在实际项目开发中运用非常广泛,也适用于很多业务场景。下面介绍5个.Net版本Redis客户端开源库,方便开发和提升效率。1、StackExchange.Redis简介:由StackExchange团队开发。它提供了丰富的功能和选项,如连接池、管道、事务、发布/订阅......
  • redis的订阅与发布
    1.订阅的关系维护redis的所有频道的订阅关系都维护在pubsub_channels字典里面,这个字典的key是被订阅的频道,而value是订阅客户端的链表。structredisServer{//...//保存所有订阅关系dict*pubsub_channels;//...}字典示例:与此类似,服务器也将......
  • Elements in iteration expect to have 'v-bind:key' directives.
    当组件中使用v-for时,如果不指定key,则会有红色警告信息。解决方案如下。方案一:绑定key(亲试有效)//方式一<liv-for="(item,index)inlist":key="index">//方式二<liv-for="(item,index)inlist":key="item.id">//方式三<liv-for="(item,in......
  • docker搭建redis集群(三主三从)及重启redis集群 redis扩容新增集群
    docker搭建redis集群(三主三从)及重启redis集群一、docker搭建redis集群1、下载redis镜像文件从远程仓库先拉取一下redis的镜像文件,如果已经提前安装过镜像的,可以跳过此步骤:dockerpullredis:6.0.82、查看本地拉取到镜像文件dockerimages 看到图上标识,就说明当前镜像文件已......
  • Redis
    redis是什么?为什么使用?基于内存的,k,v形式非关系型数据库,单机可支持十万tps。为什么使用?解决并发、性能问题,弥补关系型数据库的不足。redis的特点?1.高可用架构2.高性能3.支持持久化4.支持多种数据结构5.支持pub/sub消息模式6.支持多种语言7.原子操作,所有操作都是原子操作,......
  • c# Dictionary<TKey,TValue>.TryAdd
    原文链接:https://learn.microsoft.com/zh-cn/dotnet/fundamentals/code-analysis/quality-rules/ca1864Dictionary<TKey,TValue>.ContainsKey(TKey) 和 Dictionary<TKey,TValue>.Add 都执行查找操作,这是冗余设置。如果字典中已存在键,Dictionary<TKey,TValue>.Add 也会引发异......
  • 【container】【docker-compose】【mysql】【redis】【rabbit mq】【mongo】【elastic
    @目录写在前面mysqlredisrabbitmqmongoelasticsearch单节点多节点参考资料dockerkuberneteshelmk3s写在前面相关博文个人博客首页免责声明:仅供学习交流使用!开源框架可能存在的风险和相关后果将完全由用户自行承担,本人不承担任何法律责任。mysqlversion:'3'services:......
  • 公钥加密 openssl_public_encrypt(): key parameter is not a valid public key
    公钥加密处理报错, openssl_public_encrypt():keyparameterisnotavalidpublickey1.开启open_ssl扩展2.转化再加密下载的公钥形式类似'-----BEGINPUBLICKEY-----\nMIGTDVGHWDFNADCBiQKBgQ99XZ6WiHxh94IAKTgSOEev\n6tASj3XKVnssChGIZaSvdRXiJshGaR1LNeDbWSDFWE8OjA......
  • Docker 部署 Redis
    获取镜像#拉取镜像此处我们拉取的是官方最新镜像,其它版本可以去DockerHub查询[root@VM-24-9-centos~]#dockerpullredis:7.2创建挂载目录并复制相关文件##创建挂载目录[root@VM-0-17-centos~]#mkdir-pdata/redis/{conf,data}##切换到conf目录并下载配置文件和......