首页 > 其他分享 >bigkey分析

bigkey分析

时间:2023-08-29 21:31:39浏览次数:29  
标签:分析 6379 memory redis bigkey rdb data

redis集群中存在bigkey

问题概述

redis集群环境查询较慢,内存使用不均匀,为了避免影响业务,我们运维这边做了集群状态的分析,排查后发现,ping丢包、延时及redis日志均无异常,redis集群并未切换,但是慢日志中存在部分key值查询较为耗时,结合redis日常使用情况,我们决定对该集群做bigkey分析。

问题原因

bigkey不利于集群对内存的统一管理,存在丢失数据的隐患;由于Redis单线程的特性,操作bigkey的通常比较耗时,也就意味着阻塞Redis可能性越大,这样会造成客户端阻塞或者引起故障切换,它们通常出现在慢查询中。

解决方案

一、登录redis从节点做bgsave
(1)登录

/usr/local/redis/bin/redis-cli -p 6379 -a '密码'

(2)验证节点信息

redis 127.0.0.1:6379>info replication

(3)所有从节点在后台异步保存当前数据库的数据到磁盘

redis 127.0.0.1:6379>bgsave

(4)文件生成

/data/redis/6379/data/dump.rdb

(5)将 rdb 文件上传至分析机 10.0.0.51

scp -r  /data/redis/6379/data/dump.rdb   10.0.0.51: /data/enmo/rdb/业务名称/

二、在分析机 10.0.0.51 使用 redis-rdb-tools 进行 bigkey 分析

(1)开始分析

for rdbfile in `ls`;
     do
     nohup /usr/local/bin/rdb -c memory -e utf8 $rdbfile > memory\_$rdbfile.csv &
     nohup /usr/local/bin/rdb -c memory -e utf8 --bytes 102400 $rdbfile > memory\_$rdbfile\_100k.csv &
     done

(2)生成以下CSV文件

memory_190_6379.rdb.csv

三、将CVS文件导入到mysql数据库中 --mysql信息(库名:redis_rdb 表名:bigkey)

(1)进入到 redis_rdb 库下,将所有分析结果表导入到 bigkey表中

LOAD DATA LOCAL INFILE '/data/enmo/rdb/session/session02/20210621/memory_194_6379.rdb.csv'
  INTO TABLE bigkey
  FIELDS TERMINATED BY ',' 
  OPTIONALLY ENCLOSED BY '"' 
  LINES TERMINATED BY '\n'
  IGNORE 1 ROWS;

(2)查看bigkey表中前50行数据

select * from bigkey order by key_size desc limit 50;

(3)查看数据量大于100k的key

select * from bigkey where key_size > 102400;

最终,开发人员决定对bigkey依照业务逻辑进行拆分。bigkey拆分后,查询效率显著提高,redis运行正常。

标签:分析,6379,memory,redis,bigkey,rdb,data
From: https://blog.51cto.com/u_13482808/7281049

相关文章

  • 信息化热词分析python
    环境准备#安装requests库pipinstallrequests#安装bs4库pipinstallbs4#安装jieba库pipinstalljieba#安装selenium库pipinstallselenium#安装lxml库pipinstalllxml#安装matplotlib库pipinstallmatplotlib#安装numpy库pipinstallnumpy#安装Pill......
  • AcWing - 闫氏DP分析法
    核心思想:从集合角度来分析DP问题在我们遇到的DP问题中,一般都是求在一个有限集内的最值,但是这些方案数量一般都是指数级别的,想要一个一个查找出来不太可能。所以DP方法是用来优化这种寻找最优方案的过程的。DP问题一般来说分析时都要经过两个阶段:状态表示(化零为整):指把一些具有......
  • ArrayList 源码分析
    ArrayList简介ArrayList的底层是数组队列,相当于动态数组。与Java中的数组相比,它的容量能动态增长。在添加大量元素前,应用程序可以使用ensureCapacity操作来增加ArrayList实例的容量。这可以减少递增式再分配的数量。ArrayList继承于AbstractList,实现了List,RandomAcc......
  • 如何获取和分析Java堆信息
    引言在Java应用程序的开发和维护过程中,了解和分析Java堆信息是一项重要的任务。本文将介绍如何获取Java堆信息的不同方法,并提供一些分析堆信息的实用技巧。获取Java堆信息的方法Java虚拟机(JVM)工具:使用jcmd命令:在命令行中运行jcmd<pid>GC.heap_info,其中<pid>是Java进程的......
  • 基于AI智能分析网关的SkeyeVSS视频融合平台在海洋领域中的应用价值
    基于AI智能分析网关的SkeyeVSS视频融合平台在海洋领域中的应用价值海洋是人类的生命摇篮,是人类的生存粮仓。海洋对我们来说既是未知的,也是藏着极大的探索价值。近年来,我国一直致力于海洋事业发展以及海洋环境的保护。然而,随着核污水排放入海的影响,海洋环境管理、海洋资源安全等任务......
  • Lnton羚通视频分析算法平台在OpenCV 中如何进行实时物体识别
    要实现OpenCV的实时物体识别,你可以使用以下步骤:步骤1:导入必要的库首先,导入必要的库,包括OpenCV和相关的库:importcv2 步骤2:加载预训练模型和配置文件在进行物体识别之前,需要加载预训练的模型和相关的配置文件。你可以从OpenCV的GitHub页面(https://github.com/openc......
  • 模糊理论简单分析
    模糊理论是一个解决不确定关系的有效手段。对于一个问题,通常会:1.模糊统计试验,建立隶属度函数。2.构建模糊规则,进行模糊推理。3.去模糊化,给出定输出。 最常用的算法是扎德算子和Mamdani算法。最主要的还是该公式,圆圈就是表示先取小,再取大。当有多个输入量N、M时,还要先取小......
  • RASP分析报告
    RASP原理RASP(RuntimeApplicationSelf-Protection,运行时应用自我保护)是一种应用安全保护机制,它的目标是在应用程序运行时检测和防御各种安全攻击。与传统的防护机制(例如防火墙和安全软件)不同,RASP在应用程序内部嵌入了安全保护功能,可以实时监测和保护应用程序免受攻击。随着Web应......
  • 2023年9月东莞/深圳CPDA数据分析师认证招生
    CPDA数据分析师认证是大数据方面的认证,助力数据分析人员打下扎实的数据分析基础知识功底,为入门数据分析保驾护航。帮助数据分析人员掌握系统化的数据分析思维和方法论,提升工作效率和决策能力,遇到问题能够举一反三,为大部分决策难题提供解决方案。帮助数据分析人员掌握几种通用的数据......
  • Lnton羚通视频分析算法平台【PyTorch】教程:torch.nn.maxpool2d
    torch.nn.MaxPool2d是PyTorch中的一个二维最大池化层。它用于在神经网络中执行最大池化操作,以减少特征图的空间尺寸并提取出主要特征。torch.nn.MaxPool2d的常用语法如下:torch.nn.MaxPool2d(kernel_size,stride=None,padding=0,dilation=1,return_indices=False,ceil_mode......