一种通过队列进行缓存优化的方法及其系统技术方案

技术编号:35409535 阅读:13 留言:0更新日期:2022-11-03 11:05
本发明专利技术提供了一种通过队列进行缓存优化的方法及其系统,该方法为:步骤S1、生成多个队列,并且为每个队列设置优先级,步骤S2、调用线程redis时传入队列的优先级、调用操作命令、以及操作命令所需参数,根据优先级将操作命令和操作命令对应的所需参数放入到对应优先级的队列中;步骤S3、启动消费线程,按照优先级顺序对每个队列进行消费,按照设置的数量阀值或时间阀值触发按批次批量操作命令调用线程redis;步骤S4、队列中的第一优先级的队列批量执行后先返回结果,调用线程redis接收返回结果继续执行,消费线程继续批量执行第二优先级的队列,以此类推完成所有队列的执行;提高连接的利用率,提高系统吞吐量。提高系统吞吐量。提高系统吞吐量。

【技术实现步骤摘要】
一种通过队列进行缓存优化的方法及其系统


[0001]本专利技术涉及缓存处理
,特别是一种通过队列进行缓存优化的方法及其系统。

技术介绍

[0002]目前大部分业务是按照外部请求读写redis缓存时是随机读写,并且每次读写缓存时候,都需要占用连接,导致吞吐量低。如果改用批量写入,则无法保证业务的随机读写。现有技术针对实际业务可能分成两种方法解决,1.第一种情况,业务可以改造成批量写入的,则可以通过改数量的连接写入;这种方式改造操作比较麻烦。2.第二种情况,无法使用批量写入的,只能通过提高连接数来提升吞吐量,但是实际情况提升效果不是很明显,因为连接数多了增加了连接维护的开销,并且会收到操作系统的各种连接数限制无法提升。

技术实现思路

[0003]为克服上述问题,本专利技术的目的是提供一种通过队列进行缓存优化的方法,提高连接的利用率,提高系统吞吐量。
[0004]本专利技术采用以下方案实现:一种通过队列进行缓存优化的方法,所述方法包括如下步骤:
[0005]步骤S1、生成多个队列,并且为每个队列设置优先级,
[0006]步骤S2、调用线程redis时传入队列的优先级、调用操作命令、以及操作命令所需参数,根据优先级将操作命令和操作命令对应的所需参数放入到对应优先级的队列中;
[0007]步骤S3、启动消费线程,按照优先级顺序对每个队列进行消费,按照设置的数量阀值或时间阀值触发按批次批量操作命令调用线程redis;
[0008]步骤S4、队列中的第一优先级的队列批量执行后先返回结果,调用线程redis接收返回结果继续执行,消费线程继续批量执行第二优先级的队列,以此类推完成所有队列的执行。
[0009]进一步的,所述步骤S2进一步具体为:用户访问接口1时,会有一个调用线程接收用户请求,根据用户的请求,发送查询请求的操作命令给线程redis,将操作命令和对应的操作命令所需参数放入第一优先级的队列中,然后,等待操作命令返回请求结果,第一优先级的队列存储满后,用户访问接口2时,会有一个调用线程接收用户请求,根据用户的请求,发送查询请求的操作命令给线程redis,将操作命令和对应的操作命令所需参数放入第二优先级的队列中,依次类推。
[0010]进一步的,所述时间阈值设置为10

50毫秒一批进行批量操作命令调用线程redis;所述数量阀值设置为10

10000数量为一批进行批量操作命令调用线程redis。
[0011]本专利技术提供了一种通过队列进行缓存优化的系统,所述系统包括优先级设置模块、队列缓存数据模块、消费处理模块、执行反馈模块;
[0012]所述优先级设置模块,用于生成多个队列,并且为每个队列设置优先级,
[0013]所述队列缓存数据模块,调用线程redis时传入队列的优先级、调用操作命令、以及操作命令所需参数,根据优先级将操作命令和操作命令对应的所需参数放入到对应优先级的队列中;
[0014]所述消费处理模块,启动消费线程,按照优先级顺序对每个队列进行消费,按照设置的数量阀值或时间阀值触发按批次批量操作命令调用线程redis;
[0015]所述执行反馈模块,在队列中的第一优先级的队列批量执行后先返回结果,调用线程redis接收返回结果继续执行,消费线程继续批量执行第二优先级的队列,以此类推完成所有队列的执行。
[0016]进一步的,所述队列缓存数据模块的实现方式进一步具体为:用户访问接口1时,会有一个调用线程接收用户请求,根据用户的请求,发送查询请求的操作命令给线程redis,将操作命令和对应的操作命令所需参数放入第一优先级的队列中,然后,等待操作命令返回请求结果,第一优先级的队列存储满后,用户访问接口2时,会有一个调用线程接收用户请求,根据用户的请求,发送查询请求的操作命令给线程redis,将操作命令和对应的操作命令所需参数放入第二优先级的队列中,依次类推。
[0017]进一步的,所述时间阈值设置为10

50毫秒一批进行批量操作命令调用线程redis;所述数量阀值设置为10

10000数量为一批进行批量操作命令调用线程redis。
[0018]本专利技术的有益效果在于:本专利技术把一批操作命令+参数打包一次性发送,节约了每次来回通信的网络延时等待时间,且本专利技术按队列优先级进行处理提高连接的利用率,提高系统吞吐量。
附图说明
[0019]图1是本专利技术的方法流程示意图。
[0020]图2是本专利技术的系统工作原理框图。
具体实施方式
[0021]下面结合附图对本专利技术做进一步说明。
[0022]如图1所示,本专利技术的一种通过队列进行缓存优化的方法,所述方法包括如下步骤:
[0023]步骤S1、生成多个队列,并且为每个队列设置优先级,
[0024]步骤S2、调用线程redis时传入队列的优先级、调用操作命令、以及操作命令所需参数,根据优先级将操作命令和操作命令对应的所需参数放入到对应优先级的队列中;
[0025]步骤S3、启动消费线程,按照优先级顺序对每个队列进行消费,按照设置的数量阀值或时间阀值触发按批次批量操作命令调用线程redis;
[0026]步骤S4、队列中的第一优先级的队列批量执行后先返回结果,调用线程redis接收返回结果继续执行,消费线程继续批量执行第二优先级的队列,以此类推完成所有队列的执行。
[0027]下面结合一具体实施例对本专利技术做进一步说明:
[0028]一种通过队列进行缓存优化的方法,
[0029]1.生成多个队列,并且生成每个队列的优先级,例如优先级1,2,3,4,5;
[0030]2.调用线程redis时传入优先级、调用操作命令、以及操作命令所需参数(调用线程redis一般使用操作命令和参数,这里的命令指的是具体操作,比如GET key其中get是获取操作,key则是参数,要根据参数获取),根据优先级将操作命令和操作命令对应的所需参数放入到对应优先级的队列中;如:根据优先级放入对应的队列,1,2,3,4,5后等待结果。
[0031]其中,Redis是一个缓存中间件,也可以理解成一个内存数据库。服务程序需要通过远程调用来使用redis。这里是将命令(即操作)+操作的参数放入队列。几个无关联的操作可以随意放入,但是有关联的操作就不能随意放入。例如特殊情况下:一个流程是:X=Get商品价格,如果点击数大于10则SET商品价格

1;这种和顺序是有关联的,必须优先级1的队列获取到点击数,然后,优先级2的命令再根据优先级1的结果继续执行。
[0032]根据优先级将操作命令和操作命令对应的所需参数放入到对应优先级的队列中;如:用户1访问接口1时,会有一个线程(即调用线程)接收用户请求,根据用户1请求,发送查询当前余额指令给redis,即“GET用户1余额”,放入优先级1队列。然后,等待命令返回余额结果,需要根据余额本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种通过队列进行缓存优化的方法,其特征在于:所述方法包括如下步骤:步骤S1、生成多个队列,并且为每个队列设置优先级,步骤S2、调用线程redis时传入队列的优先级、调用操作命令、以及操作命令所需参数,根据优先级将操作命令和操作命令对应的所需参数放入到对应优先级的队列中;步骤S3、启动消费线程,按照优先级顺序对每个队列进行消费,按照设置的数量阀值或时间阀值触发按批次批量操作命令调用线程redis;步骤S4、队列中的第一优先级的队列批量执行后先返回结果,调用线程redis接收返回结果继续执行,消费线程继续批量执行第二优先级的队列,以此类推完成所有队列的执行。2.根据权利要求1所述的一种通过队列进行缓存优化的方法,其特征在于:所述步骤S2进一步具体为:用户访问接口1时,会有一个调用线程接收用户请求,根据用户的请求,发送查询请求的操作命令给线程redis,将操作命令和对应的操作命令所需参数放入第一优先级的队列中,然后,等待操作命令返回请求结果,第一优先级的队列存储满后,用户访问接口2时,会有一个调用线程接收用户请求,根据用户的请求,发送查询请求的操作命令给线程redis,将操作命令和对应的操作命令所需参数放入第二优先级的队列中,依次类推。3.根据权利要求1所述的一种通过队列进行缓存优化的方法,其特征在于:所述时间阈值设置为10

50毫秒一批进行批量操作命令调用线程redis;所述数量阀值设置为10

10000数量为一批进行批量操作命令调用线程redis。4.一种通过队列进行缓存优化的系统,其特征在于:所述系统包括优先...

【专利技术属性】
技术研发人员:刘德建陈丛亮李佳
申请(专利权)人:福建天晴在线互动科技有限公司
类型:发明
国别省市:

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

1