CN111400290A - 数据结构异常检测方法及装置、存储介质、计算机设备 - Google Patents
数据结构异常检测方法及装置、存储介质、计算机设备 Download PDFInfo
- Publication number
- CN111400290A CN111400290A CN202010111954.5A CN202010111954A CN111400290A CN 111400290 A CN111400290 A CN 111400290A CN 202010111954 A CN202010111954 A CN 202010111954A CN 111400290 A CN111400290 A CN 111400290A
- Authority
- CN
- China
- Prior art keywords
- data
- abnormal
- persistent
- memory
- key
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据结构异常检测方法及装置、存储介质、计算机设备,该方法包括:获取内存数据库对应的持久化数据;解析所述持久化数据,得到所述持久化数据对应的数据结构类型以及键值对存储数据key‑value;根据所述数据结构类型以及所述key‑value,计算所述持久化数据对应的内存大小以及元素数量;依据所述内存大小以及所述元素数量,识别异常的持久化数据。本申请与现有技术中通过线上操作获取数据的元素数量从而利用元素数量进行异常数据识别的方式相比,利用内存数据库的持久化数据作为异常识别的依据,无需线上操作,并且基于持久化数据计算数据的内存大小从而结合内存大小与元素数量综合进行异常数据的识别,提高了识别准确性。
Description
技术领域
本申请涉及互联网技术领域,尤其是涉及到一种数据结构异常检测方法及装置、存储介质、计算机设备。
背景技术
Redis是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库Redis的读写效率比传统数据库要快的多(内存的读写效率远远大于硬盘的读写效率)。目前,很多互联网软件公司会使用Redis做缓存系统,以便提高数据的读取访问性能,但是redis是一种典型的单线程key-value缓存型数据库,所有的读写操作都是在一条主线程中完成。由于redis是单线程运行的,在数据结构使用不合理的情况下会造成主线程阻塞,一旦发生阻塞,业务后续所有的操作都会有请求异常或延时的问题,极大的影响到业务应用。如果一次操作的value很大会对整个redis的响应时间造成负面影响。如何发现redis数据库中的结构异常数据,即发现redis中的大key,已成为本领域的热点问题。
目前发现redis中的大key一般是使用scan命令去遍历所有的键,对每个键根据其类型执行"STRLEN","LLEN","SCARD","HLEN","ZCARD"这些命令获取其长度或者元素个数。该方法有两个缺点:1.虽然scan命令通过游标遍历建空间并且在生产上可以通过对从服务执行该命令,但毕竟是一个线上操作,会对Redis数据库的使用产生影响;2.只能获取数据的元素数量,对于特定类型的数据例如String数据类型,元素数量为1,此时若根据元素数量来进行大key识别,就会漏识别出内存占用较大的String数据,导致对大key的识别准确性不高。
发明内容
有鉴于此,本申请提供了一种数据结构异常检测方法及装置、存储介质、计算机设备,利用Redis数据库的持久化RDB数据作为异常识别的依据,无需线上操作,并且基于持久化RDB数据计算数据的内存大小从而结合内存大小与元素数量综合进行异常数据的识别,提高了异常数据识别准确性。
根据本申请的一个方面,提供了一种数据结构异常检测方法,包括:
获取内存数据库对应的持久化数据;
解析所述持久化数据,得到所述持久化数据对应的数据结构类型以及键值对存储数据key-value;
根据所述数据结构类型以及所述key-value,计算所述持久化数据对应的内存大小以及元素数量;
依据所述内存大小以及所述元素数量,识别异常的持久化数据。
具体地,所述内存数据库包括Redis数据库,所述持久化数据包括持久化RDB(Redis database)数据。
具体地,所述根据所述键值对存储数据,计算所述持久化数据对应的内存大小以及元素数量,具体包括:
按照所述数据结构类型对应的编码规则,计算所述key-value在Redis数据库内存中的大小;
根据所述数据结构类型,计算所述key-value的元素数量。
具体地,所述数据结构类型包括但不限于string、hash、list、set、zset中任意一种;
所述根据所述数据结构类型,计算所述key-value的元素数量,具体包括:
若所述数据结构类型为string,则确定所述元素数量为1,若所述数据结构类型不是string,则从所述key-value中提取出value的数量作为所述元素数量。
具体地,所述依据所述内存大小以及所述元素数量,识别异常的持久化数据,具体包括:
当所述内存大小大于预设内存阈值以及所述元素数量大于预设元素数量阈值满足至少一个时,确定所述RDB数据为异常数据。
具体地,所述获取内存数据库对应的持久化数据之前,所述方法还包括:
配置数据集快照写入磁盘的时间,以使所述Redis数据库按照所述时间将所述内存中的数据集快照写入磁盘形成所述RDB数据。
具体地,所述依据所述内存大小以及所述元素数量,识别异常的持久化数据之后,所述方法还包括:
获取所述异常数据的产生时间;
根据所述异常数据、所述产生时间、所述内存大小以及所述元素数量,建立并输出异常数据列表,其中,所述异常数据列表中的所述异常数据按照所述内存大小从大至小、所述元素数量从多至少或者所述产生时间从前至后的顺序排列。
具体地,所述异常数据列表还包括所述异常数据的处理状态,所述建立并输出异常数据列表之后,所述方法还包括:
统计未处理的所述异常数据的数据留存时间,其中,所述数据留存时间为当前时间与所述产生时间之差;
若未处理的所述异常数据对应的所述数据留存时间大于预设超时提醒阈值,则输出所述异常数据的处理提示信息。
根据本申请的另一方面,提供了一种数据结构异常检测装置,包括:
数据获取模块,用于获取内存数据库对应的持久化数据;
数据解析模块,用于解析所述持久化数据,得到所述持久化数据对应的数据结构类型以及所述键值对存储数据;
计算模块,用于根据所述key-value,计算所述持久化数据对应的内存大小以及元素数量;
异常数据识别模块,用于依据所述内存大小以及所述元素数量,识别异常的持久化数据。
具体地,所述内存数据库包括Redis数据库,所述持久化数据包括持久化RDB(Redis database)数据。
具体地,所述计算模块,具体包括:
内存大小计算单元,用于按照所述数据结构类型对应的编码规则,计算所述key-value在Redis数据库内存中的大小;
元素数量计算单元,用于根据所述数据结构类型,计算所述key-value的元素数量。
具体地,所述数据结构类型包括但不限于string、hash、list、set、zset中任意一种;
所述元素数量计算单元,具体用于若所述数据结构类型为string,则确定所述元素数量为1,若所述数据结构类型不是string,则从所述key-value中提取出value的数量作为所述元素数量。
具体地,所述异常数据识别模块,具体用于:
当所述内存大小大于预设内存阈值以及所述元素数量大于预设元素数量阈值满足至少一个时,确定所述RDB数据为异常数据。
具体地,所述装置还包括:
写入时间配置模块,用于获取Redis数据库对应的磁盘快照RDB数据之前,配置数据集快照写入磁盘的时间,以使所述Redis数据库按照所述时间将所述内存中的数据集快照写入磁盘形成所述RDB数据。
具体地,所述装置还包括:
产生时间获取模块,用于依据所述内存大小以及所述元素数量,识别异常RDB数据之后,获取所述异常数据的产生时间;
异常列表数据模块,用于根据所述异常数据、所述产生时间、所述内存大小以及所述元素数量,建立并输出异常数据列表,其中,所述异常数据列表中的所述异常数据按照所述内存大小从大至小、所述元素数量从多至少或者所述产生时间从前至后的顺序排列。
具体地,所述异常数据列表还包括所述异常数据的处理状态,所述装置还包括:
留存时间统计模块,用于所述建立并输出异常数据列表之后,统计未处理的所述异常数据的数据留存时间,其中,所述数据留存时间为当前时间与所述产生时间之差;
提示信息输出模块,用于若未处理的所述异常数据对应的所述数据留存时间大于预设超时提醒阈值,则输出所述异常数据的处理提示信息。
依据本申请又一个方面,提供了一种存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述数据结构异常检测方法。
依据本申请再一个方面,提供了一种计算机设备,包括存储介质、处理器及存储在存储介质上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述数据结构异常检测方法。
借由上述技术方案,本申请提供的一种数据结构异常检测方法及装置、存储介质、计算机设备,利用内存数据库的持久化数据进行数据解析,逐条分析持久化数据的数据结构类型并读取出持久化后的key-value数据,而后基于数据结构类型逐条分析key-value数据对应的内存大小以及元素数量,最后利用数据的内存大小和元素数量实现对异常持久化数据的识别。本申请实施例与现有技术中通过线上操作获取数据的元素数量从而利用元素数量进行异常数据识别的方式相比,利用内存数据库的持久化数据作为异常识别的依据,无需线上操作,并且基于持久化数据计算数据的内存大小从而结合内存大小与元素数量综合进行异常数据的识别,提高了识别准确性。
上述说明仅是本申请技术方案的概述,为了能够更清楚了解本申请的技术手段,而可依照说明书的内容予以实施,并且为了让本申请的上述和其它目的、特征和优点能够更明显易懂,以下特举本申请的具体实施方式。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1示出了本申请实施例提供的一种数据结构异常检测方法的流程示意图;
图2示出了本申请实施例提供的另一种数据结构异常检测方法的流程示意图;
图3示出了本申请实施例提供的一种数据结构异常检测装置的结构示意图;
图4示出了本申请实施例提供的另一种数据结构异常检测装置的结构示意图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
在本实施例中提供了一种数据结构异常检测方法,如图1所示,该方法包括:
步骤101,获取内存数据库对应的持久化数据。
步骤102,解析持久化数据,得到持久化数据对应的数据结构类型以及键值对存储数据。
步骤103,根据key-value,计算持久化数据对应的内存大小以及元素数量。
步骤104,依据内存大小以及元素数量,识别异常的持久化数据。
本申请实施例使用内存数据库作为数据存储系统,但是保存在内存中也随之带来了一个缺点,一旦断电或者宕机,那么内存数据库中的数据将会全部丢失,为了解决这个缺点,提供了将内存数据持久化到硬盘,以及用持久化文件来恢复数据库数据的功能。本申请实施例通过对内存数据库中的存储数据持久化的方式保存内存数据,进而根据持久化数据进行异常分析。
在上述实施例中,首先,获取内存数据库写入磁盘的持久化数据,利用获取的持久化数据作为分析内存数据库中异常数据的依据;其次,对获取到的持久化数据进行解析,识别出每一组数据的数据结构类型,例如string、hash、list、set、zset等等数据结构类型,并使用读持久化文件读取工具读取持久化后的key-value数据;然后,基于读取到的数据结构类型以及key-value数据,来分析该key-value数据在实际内存中使用时所占用的内存大小以及该key-value数据的元素数量,利用持久化的key-value数据来分析内存数据库中的数据内存空间占用大小;最后,基于所得到的key-value数据的内存大小以及元素数量逐条分析每一组数据是否存在异常,综合数据的内存大小以及元素数量两种因素去考量内存数据的异常结构数据,以实现对持久化数据的异常识别。通过上述数据结构异常检测方法,采用离线的方式,获取内存数据库持久化的持久化数据,不影响内存数据库中的数据使用,并且可以通过持久化数据计算数据在实际内存中的占用空间大小,从而结合数据的内存占用大小以及元素数量来进行异常数据分析,避免无法发现元素占用较少但内存占用较大的异常数据,提高了识别准确性。
通过应用本实施例的技术方案,利用内存数据库的持久化数据进行数据解析,逐条分析持久化数据的数据结构类型并读取出持久化后的key-value数据,而后基于数据结构类型逐条分析key-value数据对应的内存大小以及元素数量,最后利用数据的内存大小和元素数量实现对异常持久化数据的识别。本申请实施例与现有技术中通过线上操作获取数据的元素数量从而利用元素数量进行异常数据识别的方式相比,利用内存数据库的持久化数据作为异常识别的依据,无需线上操作,并且基于持久化数据计算数据的内存大小从而结合内存大小与元素数量综合进行异常数据的识别,提高了识别准确性。
进一步的,作为上述实施例具体实施方式的细化和扩展,为了完整说明本实施例的具体实施过程,提供了另一种数据结构异常检测方法,内存数据库包括Redis数据库,持久化数据包括持久化RDB(Redis database)数据,RDB是Redis用来进行持久化的一种方式,是把当前内存中的数据集快照写入磁盘,也就是Snapshot快照(数据库中所有键值对数据key-value),恢复时是将快照文件直接读到内存里。如图2所示,该方法包括:
步骤201,配置数据集快照写入磁盘的时间,以使Redis数据库按照时间将内存中的数据集快照写入磁盘形成RDB数据。
步骤202,获取Redis数据库对应的磁盘快照RDB数据。
Redis根据配置在特定时间内会把当前内存中的数据集快照写入磁盘,RDB是一个紧凑压缩的二进制文件,代表Redis在某一个时间点上的数据快照。非常适合用于备份,全量复制等场景。比如每6小时执行bgsave备份,并把RDB文件拷贝到远程机器或者文件系统中(如hdfs),用于灾难恢复。在此,可以获取该写入磁盘的RDB数据,以作为异常数据分析的依据。
步骤203,解析RDB数据,得到RDB数据对应的数据结构类型以及键值对存储数据。
通过解析RDB数据来确定数据类型,以及利用RDBtools工具读取RDB数据中的持久化后的key-value数据,其中Redis中有5种数据结构类型,具体地,数据结构类型包括但不限于string、hash、list、set、zset中任意一种。
String数据类型为:key-value(value唯一)。例如:key:hello;value:world。
Hash数据类型为:key-value({field,value1},{field,value2},…)。例如:username:tom;age:28。
List数据类型为:key-value(value1,value2,…)。例如:user:A B C,其中A B C为有序的列表。
Set数据类型为:key-value(value1,value2,…)。例如:user:A B C,其中,A B C为无序的列表,且value不能有重复值。
Zset数据类型为:key-value(value1,value2,…)。例如:user:A B C,其中,A B C为有序的列表,且value不能有重复值。
步骤204,按照数据结构类型对应的编码规则,计算key-value在Redis数据库内存中的大小。
在上述实施例中,每种数据结构类型的内部编码是有差异的,在内存中的大小计算方法也是不同的。因为业务是直接读取内存中的数据,所以在判断数据是否为异常结构数据时是需要计算在内存中的大小来决定的。从RDB数据中读到数据结构类型和key-value的内容后,然后结合在内部编码计算出实际在内存中的大小,一般来说,异常数据在实际内存中的占用空间比较大,因此数据的内存大小可以为异常数据的识别提供依据。
步骤205,根据数据结构类型,计算key-value的元素数量。
在上述实施例中,除了利用数据的内存大小作为异常数据的识别依据以外,还可以统计key-value数据中的元素数量,为了提升元素数量的计算效率,可以基于不同的数据结构类型提供不同的元素数量计算方法,具体地,若数据结构类型为string,则元素数量为1,若数据结构类型不是string,则从key-value中提取出value的数量作为元素数量。也就是说,string结构类型的元素数量为1,复杂结构(排除string,其余为复杂结构)的元素数量,为key-value中value的数量,例如value1或{field,value1}为一个元素。
步骤206,当内存大小大于预设内存阈值以及元素数量大于预设元素数量阈值满足至少一个时,确定RDB数据为异常数据。
在上述实施例中,异常数据的判断依据一般可以为内存大小大于预设内存阈值以及元素数量大于预设元素数量阈值满足至少一个,在具体的判断过程中,可以先判断一条RDB数据的内存大小是否大于预设内存阈值,若大于则直接判定为异常数据,若小于或等于则继续判断该RDB数据的元素数量是否大于预设元素数量阈值,若大于则可以将其判定为异常数据,否则判定该条RDB数据为正常数据。
需要说明的是,在不同的应用场景下,异常数据的判断依据可以是不同的,例如判断依据还可以为:若RDB数据为string类型且数据的内存大小大于预设内存阈值,则判定该RDB数据为异常数据,否则,判定该RDB数据为正常数据;若RDB数据不是string类型,RDB数据的内存大小大于预设内存阈值且元素数量大于预设元素数量阈值,则判定该RDB数据为异常数据,否则,判定该RDB数据为正常数据。
在上述的判断依据描述中,对于一些元素数量较多但内存空间占用并不大的数据具有更精准的识别效果,可以避免这种情况的RDB数据被识别为异常数据。
步骤207,获取异常数据的产生时间。
步骤208,根据异常数据、产生时间、内存大小以及元素数量,建立并输出异常数据列表,其中,异常数据列表中的异常数据按照内存大小从大至小、元素数量从多至少或者产生时间从前至后的顺序排列。
在步骤207和步骤208中,识别出异常数据后,还可以对异常数据进行输出展示,方便技术人员基于所展示的异常数据进行Redis的排查,及时例如采用删除、修复等手段处理异常数据,具体来说,异常数据可以以异常数据列表的形式进行输出展示,在进行列表展示之前,还可以获取异常数据的产生时间,以便于技术人员能够基于所输出的异常数据列表直观的了解到每一条的异常数据是什么时候产生的,进而可以以此为依据对异常数据进行处理,异常数据列表中所包括的内容可以包括异常RDB数据,RDB数据的产生时间、RDB数据的内存大小以及RDB数据的元素数量,另外,列表中的异常数据排列顺序可以根据实际需要进行选择,例如按照内存大小从大至小、元素数量从多至少或者产生时间从前至后的顺序排列,也可以综合这三点因素进行排列,具体规则不做限定。
另外,需要说明的是,同一个Redis数据库可能对应有多个集群,本申请实施例可以基于同一个Redis数据库建立一个异常数据列表,也可以基于不同的集群建立多个异常数据列表,本领域技术人员可以根据实际需要灵活选择,在此不做限定。
步骤209,统计未处理的异常数据的数据留存时间,其中,数据留存时间为当前时间与产生时间之差。
步骤210,若未处理的异常数据对应的数据留存时间大于预设超时提醒阈值,则输出异常数据的处理提示信息。
在步骤209和步骤210中,异常数据列表还包括异常数据的处理状态,处理状态为已处理和未处理两种状态,顾名思义,未处理的异常数据为被识别出存在异常但还未被进行任何处理操作的数据,而已处理的异常数据是对未处理的异常数据进行特定处理解决异常问题后的数据。
在上述实施例中,可以统计异常数据列表中被标记为未处理的异常数据的数据留存时间,数据留存时间为异常数据从产生到当前总共的持续时间,即数据留存时间为当前时间与产生时间之差,进而基于该异常数据的留存时间可以对长时间未被处理的异常数据进行提示,即若未处理的异常数据对应的数据留存时间大于预设超时提醒阈值,则输出异常数据的处理提示信息,在技术人员没有及时处理的情况下,进行适当的提示,避免异常数据长时间不被处理导致的Redis阻塞。
通过应用本实施例的技术方案,对于业务应用中使用的redis集群中是否有大key是黑盒的,数据结构使用不合理不得而知,例如:某一个List结构的商品例如key goods业务在不停的写入商品例如milk,egg…当商品写入特别多,超过大key的要求,某一时刻查询或者删除所有的商品,这时候可能会造成redis集群阻塞,对系统的危害极大,通过本申请实施例的技术方案可以直观的看到有哪些大key,需要业务提前预警或者去拆分大key,从而能够极大的增加业务系统或者redis的稳定行,并且,采用离线的方式,获取Redis数据库持久化的RDB数据,不影响Redis数据库中的数据使用,并且可以通过RDB数据计算数据在实际内存中的占用空间大小,从而结合数据的内存占用大小以及元素数量来进行异常数据分析,避免无法发现元素占用较少但内存占用较大的异常数据,提高了识别准确性。
进一步的,作为图1方法的具体实现,本申请实施例提供了一种数据结构异常检测装置,如图3所示,该装置包括:数据获取模块31、数据解析模块32、计算模块33、异常数据识别模块34。
数据获取模块31,用于获取内存数据库对应的持久化数据;
数据解析模块32,用于解析持久化数据,得到持久化数据对应的数据结构类型以及键值对存储数据;
计算模块33,用于根据key-value,计算持久化数据对应的内存大小以及元素数量;
异常数据识别模块34,用于依据内存大小以及元素数量,识别异常的持久化数据。
在具体地应用场景中,内存数据库包括Redis数据库,持久化数据包括持久化RDB(Redis database)数据。
在具体地应用场景中,如图4所示,计算模块33,具体包括:内存大小计算单元331、元素数量计算单元332。
内存大小计算单元331,用于按照数据结构类型对应的编码规则,计算key-value在Redis数据库内存中的大小;
元素数量计算单元332,用于根据数据结构类型,计算key-value的元素数量。
在具体地应用场景中,数据结构类型包括但不限于string、hash、list、set、zset中任意一种;元素数量计算单元332,具体用于若数据结构类型为string,则确定元素数量为1,若数据结构类型不是string,则从key-value中提取出value的数量作为元素数量。
在具体地应用场景中,异常数据识别模块34,具体用于:当内存大小大于预设内存阈值以及元素数量大于预设元素数量阈值满足至少一个时,确定RDB数据为异常数据。
在具体地应用场景中,如图4所示,该装置还包括:写入时间配置模块35。
写入时间配置模块35,用于获取内存数据库对应的持久化数据之前,配置数据集快照写入磁盘的时间,以使Redis数据库按照时间将内存中的数据集快照写入磁盘形成RDB数据。
在具体地应用场景中,如图4所示,该装置还包括:产生时间获取模块36、异常列表数据模块37。
产生时间获取模块36,用于依据内存大小以及元素数量,识别异常的持久化数据之后,获取异常数据的产生时间;
异常列表数据模块37,用于根据异常数据、产生时间、内存大小以及元素数量,建立并输出异常数据列表,其中,异常数据列表中的异常数据按照内存大小从大至小、元素数量从多至少或者产生时间从前至后的顺序排列。
在具体地应用场景中,如图4所示,异常数据列表还包括异常数据的处理状态,该装置还包括:留存时间统计模块38、提示信息输出模块39。
留存时间统计模块38,用于建立并输出异常数据列表之后,统计未处理的异常数据的数据留存时间,其中,数据留存时间为当前时间与产生时间之差;
提示信息输出模块39,用于若未处理的异常数据对应的数据留存时间大于预设超时提醒阈值,则输出异常数据的处理提示信息。
需要说明的是,本申请实施例提供的一种数据结构异常检测装置所涉及各功能单元的其他相应描述,可以参考图1和图2中的对应描述,在此不再赘述。
基于上述如图1和图2所示方法,相应的,本申请实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述如图1和图2所示的数据结构异常检测方法。
基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施场景所述的方法。
基于上述如图1、图2所示的方法,以及图3、图4所示的虚拟装置实施例,为了实现上述目的,本申请实施例还提供了一种计算机设备,具体可以为个人计算机、服务器、网络设备等,该计算机设备包括存储介质和处理器;存储介质,用于存储计算机程序;处理器,用于执行计算机程序以实现上述如图1和图2所示的数据结构异常检测方法。
可选地,该计算机设备还可以包括用户接口、网络接口、摄像头、射频(RadioFrequency,RF)电路,传感器、音频电路、WI-FI模块等等。用户接口可以包括显示屏(Display)、输入单元比如键盘(Keyboard)等,可选用户接口还可以包括USB接口、读卡器接口等。网络接口可选的可以包括标准的有线接口、无线接口(如蓝牙接口、WI-FI接口)等。
本领域技术人员可以理解,本实施例提供的一种计算机设备结构并不构成对该计算机设备的限定,可以包括更多或更少的部件,或者组合某些部件,或者不同的部件布置。
存储介质中还可以包括操作系统、网络通信模块。操作系统是管理和保存计算机设备硬件和软件资源的程序,支持信息处理程序以及其它软件和/或程序的运行。网络通信模块用于实现存储介质内部各组件之间的通信,以及与该实体设备中其它硬件和软件之间通信。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本申请可以借助软件加必要的通用硬件平台的方式来实现,也可以通过硬件实现利用内存数据库的持久化数据进行数据解析,逐条分析持久化数据的数据结构类型并读取出持久化后的key-value数据,而后基于数据结构类型逐条分析key-value数据对应的内存大小以及元素数量,最后利用数据的内存大小和元素数量实现对异常持久化数据的识别。本申请实施例与现有技术中通过线上操作获取数据的元素数量从而利用元素数量进行异常数据识别的方式相比,利用内存数据库的持久化数据作为异常识别的依据,无需线上操作,并且基于持久化数据计算数据的内存大小从而结合内存大小与元素数量综合进行异常数据的识别,提高了识别准确性。
本领域技术人员可以理解附图只是一个优选实施场景的示意图,附图中的模块或流程并不一定是实施本申请所必须的。本领域技术人员可以理解实施场景中的装置中的模块可以按照实施场景描述进行分布于实施场景的装置中,也可以进行相应变化位于不同于本实施场景的一个或多个装置中。上述实施场景的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本申请序号仅仅为了描述,不代表实施场景的优劣。以上公开的仅为本申请的几个具体实施场景,但是,本申请并非局限于此,任何本领域的技术人员能思之的变化都应落入本申请的保护范围。
Claims (10)
1.一种数据结构异常检测方法,其特征在于,包括:
获取内存数据库对应的持久化数据;
解析所述持久化数据,得到所述持久化数据对应的数据结构类型以及键值对存储数据key-value;
根据所述数据结构类型以及所述key-value,计算所述持久化数据对应的内存大小以及元素数量;
依据所述内存大小以及所述元素数量,识别异常的持久化数据。
2.根据权利要求1所述的方法,其特征在于,所述内存数据库包括Redis数据库,所述持久化数据包括持久化RDB(Redis database)数据。
3.根据权利要求2所述的方法,其特征在于,所述根据所述键值对存储数据,计算所述持久化数据对应的内存大小以及元素数量,具体包括:
按照所述数据结构类型对应的编码规则,计算所述key-value在Redis数据库内存中的大小;
根据所述数据结构类型,计算所述key-value的元素数量。
4.根据权利要求3所述的方法,其特征在于,所述数据结构类型包括但不限于string、hash、list、set、zset中任意一种;
所述根据所述数据结构类型,计算所述key-value的元素数量,具体包括:
若所述数据结构类型为string,则确定所述元素数量为1,若所述数据结构类型不是string,则从所述key-value中提取出value的数量作为所述元素数量。
5.根据权利要求4所述的方法,其特征在于,所述依据所述内存大小以及所述元素数量,识别异常的持久化数据,具体包括:
当所述内存大小大于预设内存阈值以及所述元素数量大于预设元素数量阈值满足至少一个时,确定所述RDB数据为异常数据。
6.根据权利要求1所述的方法,其特征在于,所述获取内存数据库对应的持久化数据之前,所述方法还包括:
配置数据集快照写入磁盘的时间,以使所述Redis数据库按照所述时间将所述内存中的数据集快照写入磁盘形成所述RDB数据。
7.根据权利要求1至6中任一项所述的方法,其特征在于,所述依据所述内存大小以及所述元素数量,识别异常的持久化数据之后,所述方法还包括:
获取所述异常数据的产生时间;
根据所述异常数据、所述产生时间、所述内存大小以及所述元素数量,建立并输出异常数据列表,其中,所述异常数据列表中的所述异常数据按照所述内存大小从大至小、所述元素数量从多至少或者所述产生时间从前至后的顺序排列。
8.根据权利要求7所述的方法,其特征在于,所述异常数据列表还包括所述异常数据的处理状态,所述建立并输出异常数据列表之后,所述方法还包括:
统计未处理的所述异常数据的数据留存时间,其中,所述数据留存时间为当前时间与所述产生时间之差;
若未处理的所述异常数据对应的所述数据留存时间大于预设超时提醒阈值,则输出所述异常数据的处理提示信息。
9.一种数据结构异常检测装置,其特征在于,包括:
数据获取模块,用于获取内存数据库对应的持久化数据;
数据解析模块,用于解析所述持久化数据,得到所述持久化数据对应的数据结构类型以及所述键值对存储数据;
计算模块,用于根据所述key-value,计算所述持久化数据对应的内存大小以及元素数量;
异常数据识别模块,用于依据所述内存大小以及所述元素数量,识别异常的持久化数据。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现权利要求1至8中任一项所述的数据结构异常检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010111954.5A CN111400290A (zh) | 2020-02-24 | 2020-02-24 | 数据结构异常检测方法及装置、存储介质、计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010111954.5A CN111400290A (zh) | 2020-02-24 | 2020-02-24 | 数据结构异常检测方法及装置、存储介质、计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111400290A true CN111400290A (zh) | 2020-07-10 |
Family
ID=71434027
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010111954.5A Pending CN111400290A (zh) | 2020-02-24 | 2020-02-24 | 数据结构异常检测方法及装置、存储介质、计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111400290A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105989160A (zh) * | 2015-03-03 | 2016-10-05 | 大唐软件技术股份有限公司 | 一种针对Redis数据库的内存数据持久化方法和装置 |
US20170083579A1 (en) * | 2015-09-18 | 2017-03-23 | Alibaba Group Holding Limited | Distributed data processing method and system |
CN108280031A (zh) * | 2017-12-22 | 2018-07-13 | 努比亚技术有限公司 | redis缓存清理方法、服务器及计算机可读存储介质 |
CN109710615A (zh) * | 2018-12-29 | 2019-05-03 | 江苏满运软件科技有限公司 | 数据库的访问管理方法、系统、电子设备和存储介质 |
CN110058804A (zh) * | 2018-01-19 | 2019-07-26 | 三星电子株式会社 | 数据存储系统和用于写入键值对的对象的方法 |
-
2020
- 2020-02-24 CN CN202010111954.5A patent/CN111400290A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105989160A (zh) * | 2015-03-03 | 2016-10-05 | 大唐软件技术股份有限公司 | 一种针对Redis数据库的内存数据持久化方法和装置 |
US20170083579A1 (en) * | 2015-09-18 | 2017-03-23 | Alibaba Group Holding Limited | Distributed data processing method and system |
CN108280031A (zh) * | 2017-12-22 | 2018-07-13 | 努比亚技术有限公司 | redis缓存清理方法、服务器及计算机可读存储介质 |
CN110058804A (zh) * | 2018-01-19 | 2019-07-26 | 三星电子株式会社 | 数据存储系统和用于写入键值对的对象的方法 |
CN109710615A (zh) * | 2018-12-29 | 2019-05-03 | 江苏满运软件科技有限公司 | 数据库的访问管理方法、系统、电子设备和存储介质 |
Non-Patent Citations (1)
Title |
---|
个推大数据: ""如何解决Redis大key问题,看这一篇就够了!"", 《HTTPS://WWW.JIANSHU.COM/P/50C0894C0A19》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108647049B (zh) | 基于规则引擎的可配置化系统、方法、设备和存储介质 | |
US9324038B2 (en) | Method and system for clustering, modeling, and visualizing process models from noisy logs | |
US9442832B2 (en) | User workflow replication for execution error analysis | |
US20170097863A1 (en) | Detection method and information processing device | |
CN108292380B (zh) | 要因分析装置、要因分析方法以及记录介质 | |
US11762720B2 (en) | Information processing apparatus and non-transitory computer-readable storage medium for storing API use history display program | |
JP2018147280A (ja) | データ分析装置及びデータ分析方法 | |
US20190004923A1 (en) | Non-transitory computer-readable storage medium, display control method, and display control device | |
CN113722150A (zh) | 云硬盘数据压缩备份及恢复方法、装置、设备及存储介质 | |
TW201730786A (zh) | 執行以時間序列資料與分析資料當中的至少一部分作為輸入資料之分析處理的分析系統及分析方法 | |
CN114049185A (zh) | 成本的核算方法、装置、计算机设备和存储介质 | |
US20230222140A1 (en) | Systems and methods for automatically deriving data transformation criteria | |
CN112434104A (zh) | 面向关联规则挖掘的冗余规则筛除方法及装置 | |
CN113792038A (zh) | 用于存储数据的方法和装置 | |
CN114096959A (zh) | 时间序列数据压缩和图形签名分析 | |
CN111400290A (zh) | 数据结构异常检测方法及装置、存储介质、计算机设备 | |
US20220050763A1 (en) | Detecting regime change in time series data to manage a technology platform | |
JP6547341B2 (ja) | 情報処理装置、方法及びプログラム | |
US8780471B2 (en) | Linking errors to particular tapes or particular tape drives | |
US20220253529A1 (en) | Information processing apparatus, information processing method, and computer readable medium | |
JP2021117547A (ja) | 障害解析装置、マルチクラスタシステム、障害解析プログラムおよび障害解析方法 | |
JP2019144873A (ja) | ブロック線図解析装置 | |
CN114218086A (zh) | 一种案例测试方法、装置、设备及可读存储介质 | |
CN112596948B (zh) | 一种数据库集群数据备份方法、装置、设备及存储介质 | |
CN114328225A (zh) | 一种交易流程的测试方法、装置、设备及可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200710 |