安全公司报告
(19)国家知识产权局 (12)发明 专利申请 (10)申请公布号 (43)申请公布日 (21)申请 号 20221094596 5.2 (22)申请日 2022.08.08 (71)申请人 中国电子系统技 术有限公司 地址 100036 北京市海淀区复兴 路四十九 号 申请人 中电云数智科技有限公司 (72)发明人 彭壮 戴博文  (74)专利代理 机构 工业和信息化部电子专利中 心 11010 专利代理师 袁鸿 (51)Int.Cl. G06F 16/22(2019.01) G06F 16/21(2019.01) G06F 9/445(2018.01) G06F 40/126(2020.01) (54)发明名称 基于redis及lua脚本的分布式主键生成方 法及装置 (57)摘要 本申请公开了一种基于redis及lua脚本的 分布式主键生成方法及装置, 包括: 提供序号配 置表, 所述序号配置表中具有多个用于描述分布 式ID的字段参数; 在程序启动后, 加载所述序号 配置表到redi s中; 获取程序发起的ID生成请求, 所述ID生成请求中包含有标识所需生成ID的字 段参数; 加载lua脚本, 以基于所述序号配置表中 当前序号值确定出下一个新的序号值; 组合所确 定的新的序号值, 以及, 至少部分所述序号配置 表中的字段参数, 以生成所需的分布式ID。 本发 明实施例通过提供序号配置表, 并基于redis及 lua脚本实现高效、 简便、 有序的分布式ID的生 成。 权利要求书1页 说明书5页 附图1页 CN 115391338 A 2022.11.25 CN 115391338 A 1.一种基于redis及lua脚本的分布式主键生成方法, 其特 征在于, 包括: 提供序号配置表, 所述序号配置表中具有 多个用于描述分布式ID的字段参数; 在程序启动 后, 加载所述序号配置表到redis中; 获取程序发起的ID生成请求, 所述 ID生成请求中包 含有标识所需生成ID的字段参数; 加载lua脚本, 以基于所述序号配置表中当前序号 值确定出新的序号 值; 组合所确定的新的序号值, 以及, 至少部分所述序号配置表中的字段参数, 以生成所需 的分布式ID。 2.如权利 要求1所述的基于redis及lua脚本的分布式主键生成方法, 其特征在于, 所述 序号配置表中的字段参数包括: 名称、 前缀、 日期位数、 时间位数、 序号位数、 是否重置和当 前最大序号; 其中, 所述前缀 为具备业务标识的字符串, 用以区分不同的业 务功能。 3.如权利 要求2所述的基于redis及lua脚本的分布式主键生成方法, 其特征在于, 所述 ID生成请求中所包 含的字段参数为名称, 以根据ID生成请求中的名称生成对应的ID号。 4.如权利 要求2所述的基于redis及lua脚本的分布式主键生成方法, 其特征在于, 基于 所述序号配置表中当前序号 值确定出新的序号 值包括: 在所述当前最大序号基础上加1, 来获得新的序号 值。 5.如权利 要求1所述的基于redis及lua脚本的分布式主键生成方法, 其特征在于, 还包 括: 加载lua脚本之后, redis通过调用EV ALSHA命令来执 行缓存中的已加载的lua脚本 。 6.如权利 要求2所述的基于redis及lua脚本的分布式主键生成方法, 其特征在于, 还包 括: 利用确定出的新的序号 值更新所述序号配置表中的当前最大序号。 7.一种分布式主键生成装置, 其特征在于, 包括处理器和存储器, 所述存储器存储有计 算机程序, 所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的基于 redis及lua脚本的分布式主键生成方法的步骤。 8.一种计算机可读存储介质, 其特征在于, 所述计算机可读存储介质上存储有计算机 程序, 所述计算机程序被处理器执行时实现如权利要求1至6中任一项所述的基于redis及 lua脚本的分布式主键生成方法的步骤。权 利 要 求 书 1/1 页 2 CN 115391338 A 2基于redis及lu a脚本的分布式主键生成方 法及装置 技术领域 [0001]本发明涉及 计算机技术领域, 尤其涉及一种基于r edis及lua脚本的分布式主键生 成方法及装置 。 背景技术 [0002]在业务系统中, 一般都需要有全局唯一的业务id, 这种全局唯一的业务id在计算 机领域称为分布式id, 而目前在web系统中生 成分布式id 的方式有数据库生 成、 uuid以及雪 花算法等。 [0003]数据库生成是利用数据库主键的自增长特性, 可以生成全局唯一的主键id, 并且 可以支持排序。 这种方式存在以下缺陷: [0004](1)不同数据库的主键实现方式不同, 数据库迁移时, 需要进行处理, 另外通过存 储过程实现的自定义主键, 存 储过程的迁移也有难度; [0005](2)在读写分离和主从模式下, 只有 主库可以生成主键, 存在单点故障风险; [0006](3)与nosql方式相比, 数据库主键生成性能比较差; [0007](4)对于分库分表的情况, 借助数据库自增特性生成主键, 会造成不同数据表主键 重复。 [0008]uuid是通用唯一识别码, 可以保证全局唯一, 但是也存在以下缺陷: [0009](1)生成的id随机, 不能人工指定; [0010](2)uuid使用字符串存 储, 相较于数字, 查询性能较慢; [0011](3)uuid占用空间大, 索引效率低; [0012](4)无法实现递增, 无法进行排序。 [0013]雪花算法是一种高并发的分布式id生成解决方案, 在实际使用中也存在以下缺 陷: [0014](1)生成的id为固定的格式, 不能人工指定; [0015](2)依赖服 务器时间, 服 务器时间回拨 可能会造成生成id重复; [0016](3)容器化部署, 应用ip不固定时, 无法方便设置 机器码。 发明内容 [0017]本发明实施例提供一种基于r edis及lua脚本的分布式主键生成方法及装置, 用以 实现高效、 便捷的生成可自定义以及趋势有序的分布式ID。 [0018]本发明实施例提供一种基于redis及lua脚本的分布式主键生成方法, 包括: [0019]提供序号配置表, 所述序号配置表中具有 多个用于描述分布式ID的字段参数; [0020]在程序启动 后, 加载所述序号配置表到redis中; [0021]获取程序发起的ID生成请求, 所述ID 生成请求中包含有标识所需生成ID的字段参 数; [0022]加载lua脚本, 以基于所述序号配置表中当前序号 值确定出新的序号 值;说 明 书 1/5 页 3 CN 115391338 A 3

.PDF文档 专利 基于redis及lua脚本的分布式主键生成方法及装置

文档预览
中文文档 8 页 50 下载 1000 浏览 0 评论 309 收藏 3.0分
温馨提示:本文档共8页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
专利 基于redis及lua脚本的分布式主键生成方法及装置 第 1 页 专利 基于redis及lua脚本的分布式主键生成方法及装置 第 2 页 专利 基于redis及lua脚本的分布式主键生成方法及装置 第 3 页
下载文档到电脑,方便使用
本文档由 人生无常 于 2024-03-18 16:35:13上传分享
站内资源均来自网友分享或网络收集整理,若无意中侵犯到您的权利,敬请联系我们微信(点击查看客服),我们将及时删除相关资源。