[发明专利]一种基于Redis的业务ID生成方法在审
申请号: | 202010513461.4 | 申请日: | 2020-06-08 |
公开(公告)号: | CN111651459A | 公开(公告)日: | 2020-09-11 |
发明(设计)人: | 任超超;杨明 | 申请(专利权)人: | 北京首汽智行科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/2458 |
代理公司: | 北京世誉鑫诚专利代理事务所(普通合伙) 11368 | 代理人: | 李世端 |
地址: | 100026 北京*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 redis 业务 id 生成 方法 | ||
本发明涉及一种基于Redis的业务ID生成方法,包括:ID生成中心连接Redis集群,对Redis集群节点ID表进行初始化配置,所述初始化配置至少包括配置所述Redis集群中每个节点的节点ID,以及定义生成ID的初始时间戳;应用服务获取某个节点的节点ID,Redis的当前时间戳,以及当前节点的节点自增长ID值;采用ID生成算法,基于所述初始时间戳、所述当前时间戳、所述节点ID和所述节点自增长ID值,生成64位的业务ID。本发明生成的业务ID高性能,高可用,性能稳定,可以灵活扩展,而且生成ID呈递增趋势。
技术领域
本发明涉及ID生成技术领域,尤其涉及一种基于Redis的业务ID生成方法。
背景技术
随着业务的发展,用户群体越来越大,业务数据量也在不断的增长。在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点,MySQL主从同步读写分离也能支持。但随着数据日渐增长,主从同步也不再适用了,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够生成全局唯一的业务ID的系统是非常必要的。
现阶段,主流的唯一性ID生成方案有两种,第一种是数据库ID自增,第二种是生成唯一性的UUID。
方法一虽然稳定,生成方便,但增加了数据库压力,且受限于数据量;方法二虽然不依赖于外部,但不够灵活,生成的ID没有意义,没有顺序,极大影响数据在数据库的存储,且查询效率低下。本次我设计的方法,目的就是解决以上两种方法的弊端,设计、实现一个高性能、稳定、灵活扩展、呈递增趋势的唯一性业务ID生成方法.
发明内容
鉴于上述问题,提出了本发明以便提供克服上述问题或者至少部分地解决上述问题的一种基于Redis的业务ID生成方法。
根据本发明的一个方面,提供了一种基于Redis的业务ID生成方法,包括ID生成中心连接Redis集群,对Redis集群节点ID表进行初始化配置,所述初始化配置至少包括配置所述Redis集群中每个节点的节点ID,以及定义生成ID的初始时间戳;应用服务获取某个节点的节点ID,Redis的当前时间戳,以及当前节点的节点自增长ID值;采用ID生成算法,基于所述初始时间戳、所述当前时间戳、所述节点ID和所述节点自增长ID值,生成64位的业务ID。
根据一种可能的设计,所述应用服务获取某个节点的节点ID,具体包括:应用服务调用ID生成中心接口,所述ID生成中心从Redis节点ID表中获取集群中某一节点的节点ID。
根据一种可能的设计,所述应用服务获取Redis的当前时间戳,以及当前节点的节点自增长ID值,具体包括:应用服务调用ID生成中心接口,所述ID生成中心利用Lua脚本执行功能,获取Redis当前时间戳,以及当前节点的自增值。
根据一种可能的设计,所述ID生成中心利用Lua脚本执行功能,获取Redis当前时间戳,以及当前节点的自增值:采用Lua脚本根据Redis TIME命令,获取Redis的当前时间戳,以及当前节点的节点自增长ID值。
根据一种可能的设计,所述64位的业务ID包括:1位标识符、41位时间戳和22位的ID值组,所述ID值组包括节点ID和节点增长ID值。
根据一种可能的设计,在所述22位的ID值组中,节点ID占12位,节点增长ID值占10位。
根据一种可能的设计,所述生成业务ID,具体包括;首先获取Redis当前毫秒级的时间戳,减去初始预定的时间戳,得到差值的毫秒数,左移64-1-41=22位,然后加上当前节点的节点ID左移10位后的值,最后加上节点的自增长ID值,其生成公式为:
(当前时间戳-初始时间戳)22+节点ID10+节点自增ID值。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京首汽智行科技有限公司,未经北京首汽智行科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010513461.4/2.html,转载请声明来源钻瓜专利网。