redis缓存清理方法、服务器及计算机可读存储介质技术

技术编号:18444783 阅读:17 留言:0更新日期:2018-07-14 10:19
本发明专利技术公开了一种redis缓存清理方法、服务器及计算机可读存储介质,该redis缓存清理方法包括:通过scan命令迭代扫描redis缓存中存储的key;判断各个key的数据类型,其中key的数据类型包括string类型和非string类型;对于string类型的key,获取key中占用内存较大的key并提供给用户;对于非string类型的key,通过与非string类型对应的扫描命令对key进行迭代扫描以得到key中包括的子key,获取各个子key中占用内存较大的子key并提供给用户。与现有技术相比,本发明专利技术将占用内存较大的key和子key提供给用户,由此用户可以主动选择对哪些key进行清理;此外,对于非string类型的key,对其进行进一步迭代扫描得到其包含的子key,并对子key进行选择删除,可以避免直接删除非string类型的key时容易造成服务器堵塞的问题。

Redis cache cleaning method, server and computer readable storage medium

The invention discloses a redis cache cleaning method, a server and a computer readable storage medium. The redis cache cleaning method includes an iterative scan of the key stored in the redis cache through the scan command; the data types of each key are judged, in which the data types of the key include string type and non string type; for the string type. The key takes up a larger key of memory in the key and provides it to the user; for non string type key, the key is iteratively scanned by the non string type scanning command to obtain the sub key included in the key, obtaining the larger memory of the sub key in each of the sub key and providing it to the user. Compared with the existing technology, the invention will take up a large memory key and sub key to the user, thus the user can actively select which key to clean up; in addition, for non string type key, further iterative scanning to obtain the sub key that it contains, and select and delete the sub key, can avoid direct deletion. Unless string type key is easy to cause server blockage.

【技术实现步骤摘要】
redis缓存清理方法、服务器及计算机可读存储介质
本专利技术涉及移动终端
,尤其涉及一种redis缓存清理方法、服务器及计算机可读存储介质。
技术介绍
为了提高服务器的并发量以及吞吐量,服务器架构中都会用到缓存技术,其中redis缓存是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,该缓存技术由于其良好的性能,在服务器行业中用得最广泛。随着用户量的上升,缓存也会从单点过度到集群的方式,以增大缓存的空间。随着时间的推移,特别是服务器功能越来越多,redis缓存中会存在大量的无效数据,为了提高redis空间的利用率,保证服务器的正常运行,一种清空redis无效key的技术就显得越来越重要。传统的清空缓存的方式是通过设置key的有效时间,当到达有效时间时,redis可以自动清空;还有一种就是知道某个key,然后人工主动进行删除。这些方式对于redis中有海量的key并且没有设置有效时间时,就无法自动判别并进行删除;而且传统的清空方式是直接DELETE掉key,这种方式对于key的value不是很大的情况下是不错的选择,但是当key是个hash结构或者其他集合的结构,并且这些集合中有大量的数据(超过5百万)时,则直接DELETE这些大key会使redis阻塞,从而导致redis故障切换或者redis挂掉,使得整个服务器都不可用。同时,传统的查询key的方式使用keys命令或者smembers命令来查询key,这种方式一样也导致redis阻塞,影响服务器正常运行。同时在以往的redis缓存中,我们一般只能看到redis总的内存使用情况,还没有一种能够简单地列出redis中占用的内存非常多的某些key,不方便我们清空无用的key。因此,有必要提供一种redis缓存清理方法、服务器及计算机可读存储介质来解决上述技术问题。
技术实现思路
本专利技术的主要目的在于提出一种redis缓存清理方法、服务器及计算机可读存储介质,旨在解决对redis缓存进行清理时,容易造成服务器堵塞,且无法只清除占用内存较大的key的技术问题。首先,为实现上述目的,本专利技术提供一种redis缓存清理方法,应用于服务器,所述redis缓存清理方法包括以下步骤:通过scan命令迭代扫描redis缓存中存储的key;判断各个key的数据类型,其中key的数据类型包括string类型和非string类型;对于string类型的key,获取所述key中占用内存较大的key并提供给用户以供用户选择性的清理;对于非string类型的key,通过与所述非string类型对应的扫描命令对所述key进行迭代扫描以得到所述key中包括的子key,获取各个子key中占用内存较大的子key并提供给用户以供用户选择性的清理。可选地,所述通过与所述非string类型对应的扫描命令对所述key进行迭代扫描以得到所述key中包括的子key的步骤之后还包括:判断各所述子key的value是否为空;若判断结果为是,则直接删除所述子key;若判断结果为否,则执行所述获取各个子key中占用内存较大的子key并提供给用户的步骤。可选地,所述对于string类型的key,获取所述key中占用内存较大的key并提供给用户以供用户选择性的清理的步骤具体包括:对于string类型的key,获取所述key的value所占的内存;判断所述value所占的内存是否大于预设内存阈值;若判断结果为是,则判定所述key为占用内存较大的key,并将所述key提供给用户以供用户选择性的清理。可选地,所述获取各个子key中占用内存较大的子key并提供给用户以供用户选择性的清理的步骤之后还包括:接收用户对string类型的所述key和/或所述子key的选择操作并将用户选中的key和/或子key从所述redis缓存中删除以释放相应的内存空间。可选地,所述非string类型包括hash类型、list类型、set类型以及zset类型。同时,本专利技术还提供一种服务器,所述服务器包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的redis缓存清理程序,所述redis缓存清理程序被所述处理器执行时实现以下步骤:通过scan命令迭代扫描redis缓存中存储的key;判断各个key的数据类型,其中key的数据类型包括string类型和非string类型;对于string类型的key,获取所述key中占用内存较大的key并提供给用户以供用户选择性的清理;对于非string类型的key,通过与所述非string类型对应的扫描命令对所述key进行迭代扫描以得到所述key中包括的子key,获取各个子key中占用内存较大的子key并提供给用户以供用户选择性的清理。可选地,所述通过与所述非string类型对应的扫描命令对所述key进行迭代扫描以得到所述key中包括的子key的步骤之后,所述处理器还用于执行所述redis缓存清理程序,以实现如下步骤:判断各所述子key的value是否为空;若判断结果为是,则直接删除所述子key;若判断结果为否,则执行所述获取各个子key中占用内存较大的子key并提供给用户的步骤。可选地,所述处理器还用于执行所述redis缓存清理程序,以实现如下步骤:对于string类型的key,获取所述key的value所占的内存;判断所述value所占的内存是否大于预设内存阈值;若判断结果为是,则判定所述key为占用内存较大的key,并将所述key提供给用户以供用户选择性的清理。可选地,所述获取各个子key中占用内存较大的子key并提供给用户以供用户选择性的清理的步骤之后,所述处理器还用于执行所述redis缓存清理程序,以实现如下步骤:接收用户对string类型的所述key和/或所述子key的选择操作并将用户选中的key和/或子key从所述redis缓存中删除以释放相应的内存空间。此外,为实现上述目的,本专利技术还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有redis缓存清理程序,所述redis缓存清理程序被执行时实现如上所述redis缓存清理方法的步骤。相较于现有技术,本专利技术所提出的redis缓存清理方法、服务器及计算机可读存储介质,首先通过scan命令迭代扫描redis缓存中存储的key,之后判断各个key的数据类型,对于string类型的key,获取所述key中占用内存较大的key并提供给用户,对于非string类型的key,通过与所述非string类型对应的扫描命令对所述key进行迭代扫描以得到所述key中包括的子key,获取各个子key中占用内存较大的子key并提供给用户,由于迭代扫描可以实现一次只对redis缓存中的部分数据进行扫描输出,其避免了redis缓存中数据量较大时容易堵塞的问题;同时本专利技术将占用内存较大的key和子key提供给用户,由此用户可以知道哪些key和子key需要进行清理;此外,对于非string类型的key,其通常占用内存较大,本专利技术不是对其直接进行删除操作,而是对其进行进一步迭代扫描得到其包含的子key,并对子key进行选择删除,其也可以避免直接删除非string类型的key时容易造成服务器堵塞的问题。附图说明本文档来自技高网
...

【技术保护点】
1.一种redis缓存清理方法,应用于服务器,其特征在于,所述redis缓存清理方法包括以下步骤:通过scan命令迭代扫描redis缓存中存储的key;判断各个key的数据类型,其中key的数据类型包括string类型和非string类型;对于string类型的key,获取所述key中占用内存较大的key并提供给用户以供用户选择性的清理;对于非string类型的key,通过与所述非string类型对应的扫描命令对所述key进行迭代扫描以得到所述key中包括的子key,获取各个子key中占用内存较大的子key并提供给用户以供用户选择性的清理。

【技术特征摘要】
1.一种redis缓存清理方法,应用于服务器,其特征在于,所述redis缓存清理方法包括以下步骤:通过scan命令迭代扫描redis缓存中存储的key;判断各个key的数据类型,其中key的数据类型包括string类型和非string类型;对于string类型的key,获取所述key中占用内存较大的key并提供给用户以供用户选择性的清理;对于非string类型的key,通过与所述非string类型对应的扫描命令对所述key进行迭代扫描以得到所述key中包括的子key,获取各个子key中占用内存较大的子key并提供给用户以供用户选择性的清理。2.如权利要求1所述的redis缓存清理方法,其特征在于,所述通过与所述非string类型对应的扫描命令对所述key进行迭代扫描以得到所述key中包括的子key的步骤之后还包括:判断各所述子key的value是否为空;若判断结果为是,则直接删除所述子key;若判断结果为否,则执行所述获取各个子key中占用内存较大的子key并提供给用户的步骤。3.如权利要求1所述的redis缓存清理方法,其特征在于,所述对于string类型的key,获取所述key中占用内存较大的key并提供给用户以供用户选择性的清理的步骤具体包括:对于string类型的key,获取所述key的value所占的内存;判断所述value所占的内存是否大于预设内存阈值;若判断结果为是,则判定所述key为占用内存较大的key,并将所述key提供给用户以供用户选择性的清理。4.如权利要求1至3任一项所述的redis缓存清理方法,其特征在于,所述获取各个子key中占用内存较大的子key并提供给用户以供用户选择性的清理的步骤之后还包括:接收用户对string类型的所述key和/或所述子key的选择操作并将用户选中的key和/或子key从所述redis缓存中删除以释放相应的内存空间。5.如权利要求1所述的redis缓存清理方法,其特征在于,所述非string类型包括hash类型、list类型、set类型以及zset类型。6.一种服务器,其特征在于,所述服务器包括存储器、处理器及存储在所述存储器上...

【专利技术属性】
技术研发人员:罗川
申请(专利权)人:努比亚技术有限公司
类型:发明
国别省市:广东,44

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

1