CN116842046A - 优化缓存的方法、装置、设备和计算机可读介质 - Google Patents

优化缓存的方法、装置、设备和计算机可读介质 Download PDF

Info

Publication number
CN116842046A
CN116842046A CN202210292890.2A CN202210292890A CN116842046A CN 116842046 A CN116842046 A CN 116842046A CN 202210292890 A CN202210292890 A CN 202210292890A CN 116842046 A CN116842046 A CN 116842046A
Authority
CN
China
Prior art keywords
cache
search server
optimizing
request
data stored
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
Application number
CN202210292890.2A
Other languages
English (en)
Inventor
李建慧
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Jingdong Zhenshi Information Technology Co Ltd
Original Assignee
Beijing Jingdong Zhenshi Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Jingdong Zhenshi Information Technology Co Ltd filed Critical Beijing Jingdong Zhenshi Information Technology Co Ltd
Priority to CN202210292890.2A priority Critical patent/CN116842046A/zh
Publication of CN116842046A publication Critical patent/CN116842046A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了优化缓存的方法、装置、设备和计算机可读介质,涉及计算机技术领域。该方法的一具体实施方式包括:响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,所述消息队列包括缓存主键和缓存值;将所述消息队列中的参数,按照所述请求所属领域和所述搜索服务器的存储结构,转换为存储在搜索服务器中的数据,所述存储在搜索服务器中的数据用于记录缓存使用状态;基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存,并基于分析结果优化处理所述缓存。该实施方式能够减低扫描缓存的频率,继而减少对业务的影响。

Description

优化缓存的方法、装置、设备和计算机可读介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种优化缓存的方法、装置、设备和计算机可读介质。
背景技术
Redis是一个键值(key-value)的存储系统,它支持存储的value类型很多,包括字符串(string)、链表(list)、集合(set)、有序集合(zset)和哈希类型(hash)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。所以redis备受大量企业青睐。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:由于redis没有专门的缓存优化机制和策略,主要是基于redis缓存本身的过期时间控制缓存的使用。其次就是用户使用redis客户端等工具辅助扫描redis大key和热key,分析代码中的使用场景和使用方式,再进行相应的人工优化。扫描用时较多,对业务带来影响,更严重的可能会影响底层数据库。
发明内容
有鉴于此,本发明实施例提供一种优化缓存的方法、装置、设备和计算机可读介质,能够减低扫描缓存的频率,继而减少对业务的影响。
为实现上述目的,根据本发明实施例的一个方面,提供了一种优化缓存的方法,包括:
响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,所述消息队列包括缓存主键和缓存值;
将所述消息队列中的参数,按照所述请求所属领域和所述搜索服务器的存储结构,转换为存储在搜索服务器中的数据,所述存储在搜索服务器中的数据用于记录缓存使用状态;
基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存,并基于分析结果优化处理所述缓存。
所述响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,包括:
响应于写入或读取缓存的请求,调动软件开发工具包SDK,依据所述请求的数据发送消息队列。
所述响应于写入或读取缓存的请求,调动SDK,依据所述请求的数据发送消息队列,包括:
响应于写入或读取缓存的请求,通过缓存跟踪接口调动SDK,依据所述请求的数据发送消息队列;
所述基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存之前,还包括:
通过缓存优化分析接口,获取所述存储在搜索服务器中的数据的字段。
所述存储在搜索服务器中的数据包括:缓存占用数量、缓存使用频率和缓存变化频率中的一种或多种;
所述缓存占用数量是由所述缓存值占用的字节数量确定;
所述缓存使用频率是由所述缓存主键的写入次数和/或读取次数确定;
所述缓存变化频率是由所述缓存值占用的字节变化量确定。
所述基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存,包括:
基于所述存储在搜索服务器中的数据的字段,将所述缓存划分为分类主键,所述分类主键包括以下一种或多种:僵尸主键、低频主键、大主键且热主键和高频率变更主键。
所述优化处理包括以下一种或多种:redis扩容、redis缩容、清理僵尸主键、调整缓存时长和更新缓存策略。
所述基于分析结果优化处理所述缓存,包括:
在预设操作页面中,基于分析结果向数据库发送指令,以优化处理所述缓存。
根据本发明实施例的第二方面,提供了一种优化缓存的装置,包括:
消息模块,用于响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,所述消息队列包括缓存主键和缓存值;
转换模块,用于将所述消息队列中的参数,按照所述请求所属领域和所述搜索服务器的存储结构,转换为存储在搜索服务器中的数据,所述存储在搜索服务器中的数据用于记录缓存使用状态;
分析模块,用于基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存,并基于分析结果优化处理所述缓存。
根据本发明实施例的第三方面,提供了一种优化缓存的电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述的方法。
根据本发明实施例的第四方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现如上述的方法。
上述发明中的一个实施例具有如下优点或有益效果:响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,所述消息队列包括缓存主键和缓存值;将所述消息队列中的参数,按照所述请求所属领域和所述搜索服务器的存储结构,转换为存储在搜索服务器中的数据,所述存储在搜索服务器中的数据用于记录缓存使用状态;基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存,并基于分析结果优化处理所述缓存。由于可以将消息队列中的缓存主键和缓存值转换为搜索服务器中的数据,进而可以基于搜索服务器中的数据优化处理缓存。因此,能够减低扫描缓存的频率,继而减少对业务的影响。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的优化缓存的方法的主要流程的示意图;
图2是根据本发明实施例的优化缓存的用户交互示意图;
图3是根据本发明实施例的优化缓存的业务系统接入示意图;
图4是根据本发明实施例的优化缓存的应用流程示意图;
图5是根据本发明实施例的优化缓存的装置的主要结构的示意图;
图6是本发明实施例可以应用于其中的示例性系统架构图;
图7是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
目前,redis辅助工具在优化redis缓存起到关键作用但是仍存在以下问题。
问题1:在业务高峰时段或者一天内,不可以频繁扫描redis中大key和热key,因为频繁扫描会给redis服务器带来压力,很可能对业务带来影响,更严重的可以会影响底层数据库。其中,如果某个节点存在大key,这个节点比其他节点缓存使用率高很多。如果某个节点存在热key,这个节点的带宽占用和CPU利用率都比其他节点高。
问题2:redisdakey扫描用时较多。
问题3:redis集群拓扑,多分片和主从分片多个扫描不可同时执行。
问题4:肉眼分析redis的集群监控和ump监控,只能从宏观把控redis的使用情况,无法跟踪使用细节,无法达到真正的优化redis缓存使用的效果。
也就是说,由于扫描用时较多,对业务带来影响,更严重的可能会影响底层数据库。
为了解决扫描用时较多的技术问题,可以采用以下本发明实施例中的技术方案。
参见图1,图1是根据本发明实施例的优化缓存的方法主要流程的示意图,利用搜索服务器中的数据,分析并优化redis数据的缓存。如图1所示,具体包括以下步骤:
S101、响应于写入或读取缓存的请求,依据请求的数据发送消息队列,消息队列包括缓存主键和缓存值。
在本发明实施例中,用户通过客户端发送写入或读取缓存的请求。其中,写入或读取缓存的请求是发送至数据库的请求。作为一个示例,数据库是redis数据库。
在本发明的实施例中,可以通过调动软件开发工具包(SDK),依据写入或读取缓存的请求,发送消息队列。也就是说,响应于写入或读取缓存的请求,调动SDK,依据上述请求的数据发送消息队列。
SDK通过SDK服务器提供服务。SDK服务器作为公共服务是可对外提供服务的。即,引入SDK的数据库和页面都可以使用该服务。其中,业务系统可以承载于数据库中。这样,用户无需关心此服务和访问SDK服务器的细节,因为SDK已经封装好,用户只需关心实现自身的业务逻辑即可。
业务系统通过maven坐标引入SDK。自定义配置信息,如:redis缓存地址信息、接口连接超时阀值和是否接收报警邮件电话信息等。maven是通过描述信息来管理项目的构建,报告和文档的项目管理工具软件。
业务系统进行SDK初始化,初始化一些自定义参数,包括接入SDK之前约定的系统编码、权限码、redis缓存地址、缓存主键(key)、缓存值(value)、过期时间和监控报警参数等。
初始化成功后,调用SDK进行缓存跟踪记录操作,将写入或读取缓存请求的数据发送消息队列(MQ)。为了提高SDK的响应速度可以采用同步MQ。为了解耦SDK上传数据和分析数据的两个步骤,还可以采用异步MQ。
其中,消息队列包括缓存主键和缓存值。此外,消息队列中还可以包括系统编码、权限码和过期时间。系统编码是数据库中业务系统的标识。权限码是调用写入或读取或缓存的请求的权限的标识。
S102、将消息队列中的参数,按照请求所属领域和搜索服务器的存储结构,转换为存储在搜索服务器中的数据,存储在搜索服务器中的数据用于记录缓存使用状态。
写入或读取缓存的请求,是针对数据库的操作。为了优化缓存,基于写入或读取缓存的请求发送消息队列。需要说明的是,消息队列中的参数可以存储在搜索服务器中。这样,在优化缓存过程中,无需扫描数据库,就可以清楚了解数据库的使用情况。
具体地,将消息队列中的参数,按照请求所属领域和搜索服务器的存储结构,转换为存储在搜索服务器中的数据。存储在搜索服务器中的数据用于记录缓存使用状态。存储在搜索服务器中的数据包括:缓存占用数量、缓存使用频率和缓存变化频率中的一种或多种。
搜索服务器的存储结构包括多个字段。作为一个示例,搜索服务器是ES搜索服务器。
作为一个示例,ES搜索服务器的存储结构包括:主键标识(id)、系统编码、权限码、业务领域、缓存key、缓存占用数量、缓存使用频率、缓存变化频率、创建时间和缓存时间。
下面分别示例性地介绍,ES搜索服务器的存储结构中的各个字段。
a、主键id是使用通用唯一识别码(uuid)自动生成。
b、系统编码和权限码在消息队列中获取的。
c、业务领域是写入或读取缓存的请求所属领域。作为一个示例,领域包括以下一种或多种:揽收、配送、分拣、运单和外单。
d、缓存key是存储在redis服务器上的缓存主键。
e、缓存占用数量由缓存value占用的字节数量确定。
f、缓存使用频率是由缓存key的写入次数和/或读取次数确定。作为一个示例,A业务系统写入一个缓存key:a-redis,如果该redis数据库不存在,则sdk将缓存数据转换为一条数据存入ES搜索服务器的记录,此时缓存使用频率默认1。当该缓存被读取1次,则频率+1,依次累加;如果该缓存过期,但是调用方可能会重新写入缓存,但是ES搜索服务器存在该缓存,则使用频率仍在原有基础上+1。
g、缓存变化频率是由缓存key占用的字节变化量确定。作为一个示例,当同一个缓存的占用字节变化量超过预设变换量阈值,新增一条同id但映射id为原缓存key id的数据,通过该映射id可以计算出缓存字节变化频率。如:基于原缓存的创建时间,新缓存的创建时间,以及映射id之间的关系,计算某个时间范围内该缓存key变化的次数。该逻辑是为了粗略的计算该业务使用缓存是否合理,如果缓存数据占用字节数变化频繁、系统会统计次数,同步给调用方告警,以提醒调用方检查缓存使用合理性。
f:创建时间。创建时间即为ES搜索服务器新增该数据的时间
i:缓存时间。根据业务系统调用的传参,最终转换为分钟存储。
从上述将消息队列中的参数,转换为存储在搜索服务器中的数据来看,通过消息队列的方式监测数据库中缓存的状态,进而在优化缓存的过程中,无需扫描数据库就可以基于存储在搜索服务器中的数据,获知数据库中缓存的情况。
在本发明实施例中,底层存储使用ES搜索服务器实现。主要是基于ES搜索服务器的实时搜索,稳定,可靠,快速,安装使用方便的优点,而且其客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。对接ES搜索服务器的服务,开发者无需ES搜索服务器的相关开发、调试等细节,SDK都可以实现,只要需要的时候调用相应接口进行查询展示分析即可。
S103、基于存储在搜索服务器中的数据的字段,归类分析缓存,并基于分析结果优化处理缓存。
经过S102的转换,将写入或读取缓存的请求转换为搜索服务器中的数据。进而,能够基于存储在搜索服务器中的数据的字段,归类分析缓存,并基于分析结果优化处理缓存。
在本发明的一个实施例中,调动SDK执行优化缓存的过程中,具体采用两个标准接口实现,两个标准接口分别为:缓存跟踪接口和缓存优化分析接口。
缓存跟踪接口返回的是布尔类型,也就是使用缓存跟踪接口之后成功或者失败的结果。从缓存优化分析接口中,返回redis服务器中目前缓存的业务领域、缓存主键、缓存占用数量、缓存使用频率、缓存变化频率和过期时间等各类详细信息。每个业务系统以及业务都不一样,所以业务系统接入需要申请接入权,接入权主要包括系统编码和权限码。权限码用于后期查询的权限校验。
在具体实现过程中,响应于写入或读取缓存的请求,通过缓存跟踪接口调动SDK,依据写入或读取缓存的请求的数据发送消息队列;以及,通过缓存优化分析接口,获取存储在搜索服务器中的数据的字段。
在搜索服务器中的数据记载缓存的状态,进而基于存储在搜索服务器中的数据的字段,能够实现归类分析缓存。SDK通过缓存优化分析接口,获取存储在搜索服务器中的数据的字段,对上述字段实现归类分析。
归类分析目的在于:通过业务系统所使用的缓存集群,是否有优化空间。归纳出多种类型,然后针对每个类型分析是否需要优化,最终做到最优缓存。
在本发明的一个实施例中,基于存储在搜索服务器中的数据的字段,将缓存划分为分类主键。其中,分类主键包括以下一种或多种:僵尸主键、低频主键、大主键且热主键和高频率变更主键。
下面针对不同的分类主键进行示例性地说明。
僵尸主键
僵尸主键是没有过期时间的主键。僵尸主键因为不过期,长此以往占用redis数据库的缓存。所以根据存储在搜索服务器中的数据的字段判断僵尸主键方便且简单。
低频主键
低频主键是缓存使用频率低于预设频率阈值的主键。作为一个示例,按照缓存使用频率,按照从低到高的顺序排列,将前10个缓存作为低频主键。对于低频主键可以合理缩短缓存时间,以做到侧面减少redis数据库的存储成本。
大主键且热主键
大主键且热主键是缓存使用频率大于预设使用阈值,且缓存变化频率大于预设变化阈值的主键。大主键且热主键对于redis服务器来说无非是巨大挑战,不仅对于redis单线程的读取是一种挑战,对于流量也是一种挑战,但是业务系统是承受不了这样的打击的,时间就是金钱就是生命,对于业务系统来说响应就是生命,所以对于大主键且热主键的跟踪优化,告警提醒势在必行。
作为一个示例,告警提醒包括以下一个或多种方式:邮件、电话和短信。如:可根据自定义配置查看告警提醒方式。如果自定义配置是邮件,则需要提供相应邮箱,电话和短信也是如此。
高频率变更主键
高频率变更主键是缓存变化频率大于预设变更阈值的主键。作为一个示例,可以基于原缓存的创建时间,新缓存的创建时间,以及缓存变化频率之间的关系,计算某个时间范围内该缓存主键变化的次数。
如:缓存A,主键aid,创建时间atime。缓存A占用内存大小变更,新增缓存A,映射id至a-map-id;缓存A再次变更,新增缓存A,映射id至a-map-2-id。底层算法即为:查询缓存A的数量,查询映射id是否为空,最后一个创建时间至第一个映射id为空的创建时间,查询指定时间范围内的变化频率。
在缓存变化频率大于预设变更阈值的情况下,即确定该主键为高频变更主键,则发送报警信息。对于高频率变更主键需要考虑是否去掉缓存。还可以进一步分析高频率变更主键是否合理。如:缓存配送员的个人主要信息:身份证,姓名、所属站点和手机号码,但是由于缓存值中多存储更新时间,即:配送员信息的更新时间。考虑到,缓存主要的字段没有变,但是其他字段未过滤直接写缓存,如:快递员图像和地址等。因为,未过滤直接写缓存,则需要修改缓存值存储的合理性。
在本发明的实施例中,依据归类分析结果优化处理缓存包括以下一种或多种方式:redis扩容、redis缩容、清理僵尸主键、调整缓存时长和更新缓存策略。
在具体实施过程中,基于实际缓存占用情况,对redis数据库实现扩容,即redis扩容;或,对redis数据库实现缩容,即redis缩容。针对僵尸主键,可以通过修改主键的存储方式,如:增加过期时间。调整缓存时间是针对不同的缓存使用频率调整缓存时间。作为一个示例,对于缓存使用频率较低的缓存,说明业务业务量不是特别大,缓存时间较长对于缓存的使用也是一种浪费,可以考虑缩短缓存时长;对于缓存使用频率较高的缓存,可以考虑延长缓存时长。更新缓存策略是按照缓存的分类主键更新缓存策略,以减少分类主键的数量。
在本发明的一个实施例中,在预设操作页面中,基于分析结果向数据库发送指令,以优化处理所述缓存。也就是说,SDK可以提供服务端的预设操作界面。在预设操作页面上,显示归类分析的分析结果。响应于用户在预设操作界面向数据库发送指令,以优化处理数据库的缓存。
采用上述实施例中的技术方案,响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,所述消息队列包括缓存主键和缓存值;将所述消息队列中的参数,按照所述请求所属领域和所述搜索服务器的存储结构,转换为存储在搜索服务器中的数据,所述存储在搜索服务器中的数据用于记录缓存使用状态;基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存,并基于分析结果优化处理所述缓存。由于可以将消息队列中的缓存主键和缓存值转换为搜索服务器中的数据,进而可以基于搜索服务器中的数据优化处理缓存。因此,能够减低扫描缓存的频率,继而减少对业务的影响。
参见图2,图2是根据本发明实施例的优化缓存的用户交互示意图。图2是从用户的角度展示本发明实施例的方案。
用户通过前端页面发送相关指令。具体来说,用户通过前端页面发送写入或读取缓存的请求,进而将上述请求转换为搜索服务器中的数据。
作为一个示例,响应于写入或读取缓存的请求,通过缓存跟踪接口调动SDK,依据请求的数据发送消息队列。发送消息队列的目的在于:将消息队列中的参数,按照领域和搜索服务器的存储结构,转换为存储在搜索服务器中的数据。也就是说,通过跟踪写入或读取缓存的请求,进而在搜索服务器中存储缓存涉及的相关数据。
其次,查询搜索服务器中的数据。作为一个示例,通过缓存优化分析接口,获取存储在搜索服务器中的数据的字段。查询搜索服务器中的数据可以是在SDK中执行。查询搜索服务器中的数据的目的在于:为优化处理缓存奠定基础。
最后,优化处理缓存。基于存储在搜索服务器中的数据的字段,归类分析缓存,并基于分析结果优化处理缓存。上述优化处理缓存的过程,是基于分析结果和用户在前端页面的指令实现的。
在图2优化缓存的过程中,无需扫描数据库就能够实现,作为一个示例:数据库具体是redis数据库。
参见图3,图3是根据本发明实施例的优化缓存的业务系统接入示意图。业务系统是数据库所执行业务涉及的系统。业务系统通过SDK对外接口与SDK交互数据。
图3的实施例中,通过引入缓存跟踪优化组件SDK的jar包实现本实施例中的技术方案。可以理解的是,使用redis数据库缓存读写数据的时候,同时使用缓存跟踪优化组件。缓存跟踪优化组件采用标准的SDK方式供业务系统使用。
业务系统通过SDK对外开放接口,分别可以实现:缓存跟踪记录;查询搜索数据库中的数据;优化处理。
缓存跟踪记录包括:响应于写入或读取缓存的请求,依据上述请求的数据发送消息队列。查询搜索数据库中的数据包括:将消息队列中的参数,按照所属领域和搜索服务器的存储结构,转换为存储在搜索服务器中的数据。进而查询搜索数据库中的数据。优化处理包括:基于存储在搜索服务器中的数据的字段,归类分析缓存,并基于分析结果优化处理缓存。
在图3的实施例中,数据库具体为redis是数据库,搜索服务器是ES。SDK组件主要包括以下功能:
提供标准接口,标准接口包括缓存跟踪接口和缓存优化分析接口。缓存跟踪接口返回的是布尔类型,也就是使用缓存跟踪接口之后成功或者失败的结果。通过缓存优化分析接口,返回redis服务器中目前缓存的业务领域、缓存主键、缓存占用数量、缓存使用频率、缓存变化频率和过期时间等各类详细信息。
此外,在接口底层存储使用ES实现,主要是基于ES的实时搜索,稳定,可靠,快速,安装使用方便的优点,而且其官方客户端在Java、.NET(C#)、PHP、Python、Apache Groovy、Ruby和许多其他语言中都是可用的。对接ES等服务,开发者无需ES的相关开发和调试等细节,SDK都能够实现。进而调用相应接口进行查询展示分析即可。
采用图3中的实施例,可以解决下述技术问题:
无需扫描redis集群分片就可以清晰了解redis数据库的使用情况。基于ES中的数据的字段实现归类分析,进而详细掌握每个缓存主键的使用情况。无需花费大量时间在redis集群分片上扫描查看大主键和热主键,以定位占用流量比较大业务。
采用本发明实施例中的SDK组件,redis数据库的管理就会非常方便,且操作简单,可视化。
参见图4,图4是根据本发明实施例的优化缓存的应用流程示意图,具体包括以下步骤:
S402至S406是针对写入或读取缓存的请求,将MQ中的参数转换为ES中数据的上传数据过程;S407至S409是ES中数据的分析数据过程。
其中,上述两个过程可以是同步执行,或异步执行。作为一个示例,通过操作页面写入或读取缓存的请求和查询请求之后,在将MQ中参数转换为ES中的数据之后,依次执行S407至S409,以归类分析S408中的数据。
作为另一个示例,通过操作页面写入或读取缓存的请求之后,在将MQ中参数转换为ES中的数据之后,用户并未发送查询请求。在接收到查询请求之后,再依次执行S407至S409,以归类分析S408中的数据。
S401、操作页面。
在本发明实施例中,用户通过客户端的操作页面发送相关请求。其中,客户端可以设置于个人电脑和/或移动终端。
S402、写入或读取缓存的请求。
用户通过操作页面发送写入或读取缓存的请求。
S403、SDK初始化。
SDK通过SDK服务器提供服务。SDK服务器作为公共服务是可对外提供服务的。业务系统进行SDK初始化,初始化一些自定义参数。
S404、异步MQ。
初始化成功后,调用SDK进行缓存跟踪记录操作,将写入或读取缓存请求的数据发送异步MQ,以解耦上传数据和分析数据。
S405、SDK校验。
SDK通过系统编码和权限码校验成功。
S406、将MQ中参数转换为ES中的数据。
将MQ中的参数,按照所属领域和ES的存储结构,转换为存储在ES中的数据。
S407、查询请求。
用户通过操作页面,发送查询请求。
S408、调用ES归类分析。
基于存储在ES中的数据的字段,归类分析缓存。
S409、返回分析结果。
将分析的分析结果,通过操作页面返回至客户端。
参见图5,图5是根据本发明实施例的优化缓存的装置的主要结构的示意图,优化缓存的装置可以实现优化缓存的方法,如图5所示,优化缓存的装置具体包括:
消息模块501,用于响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,所述消息队列包括缓存主键和缓存值;
转换模块502,用于将所述消息队列中的参数,按照所述请求所属领域和所述搜索服务器的存储结构,转换为存储在搜索服务器中的数据,所述存储在搜索服务器中的数据用于记录缓存使用状态;
分析模块503,用于基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存,并基于分析结果优化处理所述缓存。
在本发明的一个实施例中,消息模块501,具体用于响应于写入或读取缓存的请求,调动软件开发工具包SDK,依据所述请求的数据发送消息队列。
在本发明的一个实施例中,消息模块501,具体用于响应于写入或读取缓存的请求,通过缓存跟踪接口调动SDK,依据所述请求的数据发送消息队列;
分析模块503,具体用于通过缓存优化分析接口,获取所述存储在搜索服务器中的数据的字段。
在本发明的一个实施例中,存储在搜索服务器中的数据包括:缓存占用数量、缓存使用频率和缓存变化频率中的一种或多种;
所述缓存占用数量是由所述缓存值占用的字节数量确定;
所述缓存使用频率是由所述缓存主键的写入次数和/或读取次数确定;
所述缓存变化频率是由所述缓存值占用的字节变化量确定。
在本发明的一个实施例中,分析模块503,具体用于基于所述存储在搜索服务器中的数据的字段,将所述缓存划分为分类主键,所述分类主键包括以下一种或多种:僵尸主键、低频主键、大主键且热主键和高频率变更主键。
在本发明的一个实施例中,所述优化处理包括以下一种或多种:redis扩容、redis缩容、清理僵尸主键、调整缓存时长和更新缓存策略。
在本发明的一个实施例中,分析模块503,具体用于在预设操作页面中,基于分析结果向数据库发送指令,以优化处理所述缓存。
图6示出了可以应用本发明实施例的优化缓存的方法或优化缓存的装置的示例性系统架构600。
如图6所示,系统架构600可以包括终端设备601、602、603,网络604和服务器605。网络604用以在终端设备601、602、603和服务器605之间提供通信链路的介质。网络604可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备601、602、603通过网络604与服务器605交互,以接收或发送消息等。终端设备601、602、603上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备601、602、603可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器605可以是提供各种服务的服务器,例如对用户利用终端设备601、602、603所浏览的购物类网站提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的产品信息查询请求等数据进行分析等处理,并将处理结果(例如目标推送信息、产品信息--仅为示例)反馈给终端设备。
需要说明的是,本发明实施例所提供的优化缓存的方法一般由服务器605执行,相应地,优化缓存的装置一般设置于服务器605中。
应该理解,图6中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图7,其示出了适于用来实现本发明实施例的终端设备的计算机系统700的结构示意图。图7示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图7所示,计算机系统700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有系统700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分706;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括消息模块、转换模块和分析模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,消息模块还可以被描述为“用于响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,所述消息队列包括缓存主键和缓存值”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:
响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,所述消息队列包括缓存主键和缓存值;
将所述消息队列中的参数,按照所述请求所属领域和所述搜索服务器的存储结构,转换为存储在搜索服务器中的数据,所述存储在搜索服务器中的数据用于记录缓存使用状态;
基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存,并基于分析结果优化处理所述缓存。
根据本发明实施例的技术方案,响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,所述消息队列包括缓存主键和缓存值;将所述消息队列中的参数,按照所述请求所属领域和所述搜索服务器的存储结构,转换为存储在搜索服务器中的数据,所述存储在搜索服务器中的数据用于记录缓存使用状态;基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存,并基于分析结果优化处理所述缓存。由于可以将消息队列中的缓存主键和缓存值转换为搜索服务器中的数据,进而可以基于搜索服务器中的数据优化处理缓存。因此,能够减低扫描缓存的频率,继而减少对业务的影响。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (10)

1.一种优化缓存的方法,其特征在于,包括:
响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,所述消息队列包括缓存主键和缓存值;
将所述消息队列中的参数,按照所述请求所属领域和所述搜索服务器的存储结构,转换为存储在搜索服务器中的数据,所述存储在搜索服务器中的数据用于记录缓存使用状态;
基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存,并基于分析结果优化处理所述缓存。
2.根据权利要求1所述优化缓存的方法,其特征在于,所述响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,包括:
响应于写入或读取缓存的请求,调动软件开发工具包SDK,依据所述请求的数据发送消息队列。
3.根据权利要求2所述优化缓存的方法,其特征在于,所述响应于写入或读取缓存的请求,调动SDK,依据所述请求的数据发送消息队列,包括:
响应于写入或读取缓存的请求,通过缓存跟踪接口调动SDK,依据所述请求的数据发送消息队列;
所述基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存之前,还包括:
通过缓存优化分析接口,获取所述存储在搜索服务器中的数据的字段。
4.根据权利要求1所述优化缓存的方法,其特征在于,所述存储在搜索服务器中的数据包括:缓存占用数量、缓存使用频率和缓存变化频率中的一种或多种;
所述缓存占用数量是由所述缓存值占用的字节数量确定;
所述缓存使用频率是由所述缓存主键的写入次数和/或读取次数确定;
所述缓存变化频率是由所述缓存值占用的字节变化量确定。
5.根据权利要求1所述优化缓存的方法,其特征在于,所述基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存,包括:
基于所述存储在搜索服务器中的数据的字段,将所述缓存划分为分类主键,所述分类主键包括以下一种或多种:僵尸主键、低频主键、大主键且热主键和高频率变更主键。
6.根据权利要求1所述优化缓存的方法,其特征在于,所述优化处理包括以下一种或多种:redis扩容、redis缩容、清理僵尸主键、调整缓存时长和更新缓存策略。
7.根据权利要求1所述优化缓存的方法,其特征在于,所述基于分析结果优化处理所述缓存,包括:
在预设操作页面中,基于分析结果向数据库发送指令,以优化处理所述缓存。
8.一种优化缓存的装置,其特征在于,包括:
消息模块,用于响应于写入或读取缓存的请求,依据所述请求的数据发送消息队列,所述消息队列包括缓存主键和缓存值;
转换模块,用于将所述消息队列中的参数,按照所述请求所属领域和所述搜索服务器的存储结构,转换为存储在搜索服务器中的数据,所述存储在搜索服务器中的数据用于记录缓存使用状态;
分析模块,用于基于所述存储在搜索服务器中的数据的字段,归类分析所述缓存,并基于分析结果优化处理所述缓存。
9.一种优化缓存的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
CN202210292890.2A 2022-03-24 2022-03-24 优化缓存的方法、装置、设备和计算机可读介质 Pending CN116842046A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210292890.2A CN116842046A (zh) 2022-03-24 2022-03-24 优化缓存的方法、装置、设备和计算机可读介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210292890.2A CN116842046A (zh) 2022-03-24 2022-03-24 优化缓存的方法、装置、设备和计算机可读介质

Publications (1)

Publication Number Publication Date
CN116842046A true CN116842046A (zh) 2023-10-03

Family

ID=88171150

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210292890.2A Pending CN116842046A (zh) 2022-03-24 2022-03-24 优化缓存的方法、装置、设备和计算机可读介质

Country Status (1)

Country Link
CN (1) CN116842046A (zh)

Similar Documents

Publication Publication Date Title
CN109947668B (zh) 存储数据的方法和装置
CN109542361B (zh) 一种分布式存储系统文件读取方法、系统及相关装置
CN110598138A (zh) 基于缓存的处理方法和装置
CN112003945A (zh) 服务请求响应方法及装置
CN112800410A (zh) 一种多产品登录管理方法、装置、设备及存储介质
CN113364887A (zh) 一种基于ftp的文件下载方法、代理服务器和系统
CN116842046A (zh) 优化缓存的方法、装置、设备和计算机可读介质
CN113992358B (zh) 网络安全策略的分配方法及装置
CN115190125A (zh) 一种缓存集群的监控方法和装置
CN115496544A (zh) 一种数据处理的方法和装置
CN113138943B (zh) 一种处理请求的方法和装置
CN112994934B (zh) 数据交互方法、装置及系统
CN114048059A (zh) 接口的超时时间调整方法、装置、计算机设备及存储介质
CN113778977A (zh) 数据处理方法和数据处理装置
CN111294231B (zh) 资源管理方法及系统
CN113722007A (zh) Vpn分支设备的配置方法、装置及系统
CN110019671B (zh) 一种处理实时消息的方法和系统
CN113761433A (zh) 业务处理方法和装置
CN113760974A (zh) 动态缓存的方法、装置和系统
CN112214500A (zh) 数据对比的方法、装置、电子设备和存储介质
CN113722193A (zh) 检测页面异常的方法和装置
CN112699116A (zh) 一种数据处理方法和系统
CN111949472A (zh) 一种记录应用日志的方法及装置
CN110262756B (zh) 用于缓存数据的方法和装置
CN113778909B (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