[发明专利]高并发REDIS数据库操作方法及系统有效
申请号: | 201710516178.5 | 申请日: | 2017-06-29 |
公开(公告)号: | CN107463612B | 公开(公告)日: | 2019-10-01 |
发明(设计)人: | 熊明强;党艳平;潘仁胜 | 申请(专利权)人: | 北京北信源软件股份有限公司 |
主分类号: | G06F16/25 | 分类号: | G06F16/25;G06F16/2458 |
代理公司: | 北京路浩知识产权代理有限公司 11002 | 代理人: | 王莹;曹杰 |
地址: | 100081 北京市海淀区中*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 并发 redis 数据库 操作方法 系统 | ||
本发明公开一种高并发REDIS数据库操作方法及系统,可以减少业务方法调用Redis数据库的操作次数,合并多次操作为一次Pipeline操作,显著的减少了Redis数据库操作的平均耗时,提高了整个业务模块的处理效率;通过使用PipeLine执行LinkedBlockingQueue<Object[]>的耗时统计,动态的控制LinkedBlockingQueue<Object[]>的大小,保证每次Pipeline执行的平均耗时达到最佳状态,避免瞬时高并发操作导致操作结果返回等待过长引起的超时失败,从而提高了Redis数据库的可靠性。
技术领域
本发明涉及Redis数据库领域,具体涉及一种高并发REDIS数据库操作方法及系统。
背景技术
软件开发中使用Redis数据库,需要使用新增、修改、删除的命令操作Redis数据库;可用操作方式有两种方式:非管道式、管道式操作;其中非管道式的操作需要在命令执行完之后等待返回的结果,诸如:set,hset,get,hget,del等命令,在处理高并发时,需要逐一操作,效率很低;因此需要使用管道来操作Redis数据库,这样的好处就是高并发时处理效率提高,其缺点是需要等待整个管道中的所有操作均完成,才最终返回全部结果;最后需要从全部结果中逐一匹配到管道操作是传入的各个操作,需要耗费一定时间。
发明内容
有鉴于此,本发明实施例提供一种高并发REDIS数据库操作方法及系统,一方面能使Redis管道操作直接准确返回结果,免去结果匹配的耗时,提高Redis操作的响应速率;另一方面能使Redis管道数量动态增减,提高处理效率。
一方面,本发明实施例提出一种高并发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操作调用者;
其中,所述方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京北信源软件股份有限公司,未经北京北信源软件股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710516178.5/2.html,转载请声明来源钻瓜专利网。