Redis客户端监测方法、系统、电子设备及存储介质技术方案

技术编号:38550914 阅读:11 留言:0更新日期:2023-08-22 20:57
本发明专利技术公开了Redis客户端监测方法、系统、电子设备及存储介质,属于数据库性能监测技术领域,本发明专利技术要解决的技术问题为如何监测Redis服务端网卡被打满的原因、Redis连接数超过服务端设置的最大值、耗时统计、异常数据查找以及缓存溯源,技术方案为:使用JDK动态代理技术拦截ValueOperations类的set方法和get方法,在客户端通过set方法和get方法设置和获取Redis缓存时采集指标数据;使用Spring的@Scheduled注解发送客户端中采集到的指标数据到mysql、Redis或者消息队列;根据使用的技术栈,确保把采集的指标数据持久化到Redis、mysql或者es中。mysql或者es中。mysql或者es中。

【技术实现步骤摘要】
Redis客户端监测方法、系统、电子设备及存储介质


[0001]本专利技术涉及SpringMVC框架的数据库性能监测
,具体地说是一种Redis客户端监测方法、系统、电子设备及存储介质。

技术介绍

[0002]现有的Redis监测都是基于Redis服务端进行监测,监测的指标具体如下:

内存监测:Redis内存使用情况是监测Redis运行状态的重要指标之一,可以使用Redis 内置的内存监测机制来实时监测Redis内存使用情况,及时发现内存泄漏等问题。
[0003]②
磁盘监测:Redis 存储数据的方式为内存和磁盘,因此磁盘监测对于Redis运行状态监测至关重要;Redis内置的磁盘监测机制来实时监测Redis磁盘使用情况,及时发现磁盘空间不足等问题。
[0004]③
网络监测:Redis通过网络与客户端进行通信,因此网络监测可以实时监测 Redis 的网络状况,及时发现网络故障和性能问题,可以使用Redis内置的网络监测机制来实现网络监测。
[0005]④
性能监测:Redis的运行速度非常快,因此性能监测对于 Redis 运行状态监测也非常重要;Redis 内置的性能监测机制来实时监测Redis的运行速度、响应时间等指标,及时发现性能问题。
[0006]Redis服务端监测还可以监测的指标有可用性指标、容量指标和扩展性指标。可用性指标包括Redis的连接数、负载、超时率、错误率等。容量指标包括Redis的磁盘使用率、内存使用率、数据集大小等。扩展性指标包括Redis的集群规模、节点健康状况等。
[0007]Redis服务端监测主要是针对Redis自身的性能、可用性、安全性等方面的监测,在使用Redis时遇到了一些问题只通过服务端很难找到问题的根本原因,遇到的问题如下:问题1:Redis服务端网卡被打满,一般是因为对redis的错误使用导致,某些key对应的value太大,操作又频繁导致,解决该问题的思路是找到这些key,看是否可以缓存到应用的本地缓存中,如果通过Redis服务端分析大value,则需要使用scan命令,遍历所有缓存找到大value,这样就会影响redis的稳定,这些命令是禁止在生产环境使用的。
[0008]问题2:Redis连接数超过服务端设置的最大值,在Redis服务端只能取到应用侧的出口ip,现在都是k8s集群环境,每个pod都是内部ip,根据出口ip无法找到对应的应用。
[0009]问题3:耗时统计,Redis服务端获取不到从客户端发起请求到,返回数据的耗时,这个耗时跟网络环境有关,是非常重要的指标。
[0010]问题4:异常数据,应用从Redis获取数据,出现异常时服务端无法知晓具体异常。
[0011]问题5:缓存溯源,服务端无法获取某个应用使用了哪些缓存,某个缓存被哪些应用使用了,某缓存对应的pod,某个pod调用Redis的时间分布等。
[0012]故如何监测Redis服务端网卡被打满的原因、Redis连接数超过服务端设置的最大值、耗时统计、异常数据查找以及缓存溯源,达到更贴近应用、更加灵活以及更好地支持异步处理且更加可靠的监测效果是目前亟待解决的技术问题。

技术实现思路

[0013]本专利技术的技术任务是提供一种Redis客户端监测方法、系统、电子设备及存储介质,来解决如何监测Redis服务端网卡被打满的原因、Redis连接数超过服务端设置的最大值、耗时统计、异常数据查找以及缓存溯源,达到更贴近应用、更加灵活以及更好地支持异步处理且更加可靠的监测效果的问题。
[0014]本专利技术的技术任务是按以下方式实现的,一种Redis客户端监测方法,该方法具体如下:使用JDK动态代理技术拦截ValueOperations类的set方法和get方法,在客户端通过set方法和get方法设置和获取Redis缓存时采集指标数据;其中,指标数据包括value的大小、请求的耗时、请求的次数和异常数据,在对value的大小、请求的耗时、请求的次数和异常数据指标持久化时同时记录进程的ip和应用名称的信息;使用Spring的@Scheduled注解发送客户端中采集到的指标数据到mysql、Redis或者消息队列;根据使用的技术栈,确保把采集的指标数据持久化到Redis、mysql或者es中。
[0015]作为优选,使用JDK动态代理技术拦截ValueOperations类的set方法和get方法是通过InvocationHandler接口在invoke方法中实现拦截。
[0016]作为优选,请求的耗时和请求的次数是使用线程安全的AtomicLongMap类,每个pod里面的统计先放到jvm内存,一分钟上传一次,防止一分钟内不同的redis key占用过多内存,并设置本地暂时存储最大key的数量,超过最大值则丢弃,丢弃100次时打印日志;实际记录统计数据的对象占用很小内存,因为若同一个key获取多次,则值累加,而不是记录多条数据。
[0017]作为优选,使用Spring的@Scheduled注解发送客户端中采集到的指标数据到mysql、Redis或消息队列具体如下:使用Redis列表和定时任务@Scheduled实现消息队列,考虑到消费速度小于发送速度的情况,消息在redis积压,占用redis服务器内存过大,设置最大消息的条数;根据收集指标数据的频率和数据量大小选择直接把数据写到mysql或者先写到redis或者消息队列,如rocketmq或kafka。
[0018]更优地,根据使用的技术栈,确保把采集的指标数据持久化到Redis、mysql或者es中具体如下:将指标数据发送到kafka,新建应用消费插件消费kafka里的消息,并写到Redis、mysql或者es中或者使用大数据技术对指标数据进行分析,提取有用数据,最终实现预警或辅助分析问题或者通过页面可视化图表和报表方式展示。
[0019]更优地,应用消费插件的消费的方式包括中间件rocketMQ、kafka或rabbitMQ。
[0020]一种Redis客户端监测系统,该系统包括指标采集模块、指标发送模块及数据持久化模块;指标采集模块用于使用JDK动态代理技术拦截ValueOperations类的set方法和get方法,在客户端通过set方法和get方法设置和获取Redis缓存时采集指标数据;其中,指标数据包括value的大小、请求的耗时、请求的次数和异常数据,在对value的大小、请求的耗时、请求的次数和异常数据指标持久化时同时记录进程的ip和应用名称的信息;
指标发送模块用于使用Spring的@Scheduled注解发送客户端中采集到的指标数据到mysql、Redis或者消息队列;数据持久化模块用于根据使用的技术栈,确保把采集的指标数据持久化到Redis、mysql或者es中。
[0021]作为优选,所述指标采集模块通过InvocationHandler接口在invoke方法中实现本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种Redis客户端监测方法,其特征在于,该方法具体如下:使用JDK动态代理技术拦截ValueOperations类的set方法和get方法,在客户端通过set方法和get方法设置和获取Redis缓存时采集指标数据;其中,指标数据包括value的大小、请求的耗时、请求的次数和异常数据,在对value的大小、请求的耗时、请求的次数和异常数据指标持久化时同时记录进程的ip和应用名称的信息;使用Spring的@Scheduled注解发送客户端中采集到的指标数据到mysql、Redis或者消息队列;根据使用的技术栈,确保把采集的指标数据持久化到Redis、mysql或者es中。2.根据权利要求1所述的Redis客户端监测方法,其特征在于,使用JDK动态代理技术拦截ValueOperations类的set方法和get方法是通过InvocationHandler接口在invoke方法中实现拦截。3.根据权利要求1所述的Redis客户端监测方法,其特征在于,请求的耗时和请求的次数是使用线程安全的AtomicLongMap类,每个pod里面的统计先放到jvm内存,一分钟上传一次,并设置本地暂时存储最大key的数量,超过最大值则丢弃,丢弃100次时打印日志;若同一个key获取多次,则值累加。4.根据权利要求1所述的Redis客户端监测方法,其特征在于,使用Spring的@Scheduled注解发送客户端中采集到的指标数据到mysql、Redis或消息队列具体如下:使用Redis列表和定时任务@Scheduled实现消息队列,设置最大消息的条数;根据收集指标数据的频率和数据量大小选择直接把数据写到mysql或者先写到redis或者消息队列。5.根据权利要求1

4中任一项所述的Redis客户端监测方法,其特征在于,根据使用的技术栈,确保把采集的指标数据持久化到Redis、mysql或者es中具体如下:将指标数据发送到kafka,新建应用消费插件消费kafka里的消息,并写到Redis、mysql或者es中或者使用大数据技术对指标数据进行分析,提取有用数据,最终实现预警或辅助分析问题或者通过页面可视化图表和报表方式展示。6.根据权利要求5所述的Redis客户端监测方法,其特征在于,应...

【专利技术属性】
技术研发人员:尚永强林大伟郑斌
申请(专利权)人:山东浪潮数字商业科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1