[发明专利]高并发REDIS数据库操作方法及系统有效
申请号: | 201710516178.5 | 申请日: | 2017-06-29 |
公开(公告)号: | CN107463612B | 公开(公告)日: | 2019-10-01 |
发明(设计)人: | 熊明强;党艳平;潘仁胜 | 申请(专利权)人: | 北京北信源软件股份有限公司 |
主分类号: | G06F16/25 | 分类号: | G06F16/25;G06F16/2458 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王莹;曹杰 |
地址: | 100081 北京市海淀区中*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开一种高并发REDIS数据库操作方法及系统,可以减少业务方法调用Redis数据库的操作次数,合并多次操作为一次Pipeline操作,显著的减少了Redis数据库操作的平均耗时,提高了整个业务模块的处理效率;通过使用PipeLine执行LinkedBlockingQueue | ||
搜索关键词: | 并发 redis 数据库 操作方法 系统 | ||
【主权项】:
1.一种高并发REDIS数据库操作方法,其特征在于,包括:S1、构建Pipeline连接池、一个Redis操作的单例工具类、一个任务线程并启动该任务线程;S2、为每一个Pipeline分别构建一个HashMap<String,SynchronousQueue<Object>>和LinkedBlockingQueue<Object[]>,其中,所述任务线程用于执行Pipeline及其LinkedBlockingQueue<Object[]>;S3、在Redis操作调用开始,若检查获知当前Pipeline对象未锁定,且当前Pipeline对象对应的LinkedBlockingQueue<Object[]>未满,则构建一个Object[],将Redis操作调用的方法、方法参数列表类型、输入参数封装到该Object[],并随机生成一个uuid,将该uuid放入该Object[],同时创建一个SynchronousQueue<Object>,将uuid作为键值,SynchronousQueue<Object>作为值写入HashMap<String,SynchronousQueue<Object>>;S4、将该Object[]放入LinkedBlockingQueue<Object[]>,根据该Object[]中uuid从HashMap<String,SynchronousQueue<Object>>中获取uuid对应的SynchronousQueue<Object>,并调用该SynchronousQueue<Object>的take()作为结果返回给Redis操作调用者;其中,所述一种高并发REDIS数据库操作方法还包括:S5、计算所述任务线程执行当前Pileline对象对应的LinkedBlockingQueue<Object[]>的耗时及执行命令数,根据所述耗时及执行命令数计算获取每个命令的平均耗时,将所述执行命令数及对应的平均耗时存入内存片段中的历史记录中,从所述历史记录中选择平均耗时最短的执行命令数,设置当前Pipeline对象对应的LinkedBlockingQueue<Object[]>的长度为该执行命令数;S6、在当前Pileline对象对应的LinkedBlockingQueue<Object[]>执行完成后,逐一通过Object[]中的uuid从当前Pileline对象对应的HashMap<String,SynchronousQueue<Object>>中获取该uuid对应的SynchronousQueue<Object>,调用该SynchronousQueue<Object>的put()方法将Redis命令执行结果放入。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京北信源软件股份有限公司,未经北京北信源软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710516178.5/,转载请声明来源钻瓜专利网。