Redis incr实现流水号自动增长

news2024/11/15 9:43:15

文章目录

  • 问题描述:
  • 实现思路
  • 代码案例

问题描述:

Java项目实现流水号自动增长,项目需求中有时需要生成一定规则递增编号:

eg用户编码自动生成,规则:user+7位数字,每次新增自增长,例:user0000001
角色编码自动生成,规则:role+7位数字,每次新增自增长,例:role0000001

实现思路

实现的基本思路就是项目启动时,从数据库获取当前最大值,作为静态变量存储;
业务获取新的编码,考虑并发问题,获取编码方法(编码自增部分)为synchronized同步方法,如果自增为原子操作,则无需同步;
编码前置0,使用String.format(“%07d”, num);格式化获取。
传入了数据库中最新设备编号,将首先使用Integer的parseInt()方法返回十进制整数,这样就可以对其自增1。

最简单的可以用Redis的incr来实现这种效果。

代码案例

1、生成保险产品的险种编码
2、规则:保险公司简称首字母+险种大类+主附险标记+8位流水自增长,例:中德安联个险主险,ZDAL 1 0 00000001

/**
 * 业务实现类
 * @param productCode
 * @param numLength
 * @return
 */
@Service
@Slf4j
public class InsuranceProductServiceImpl{
	@Override
    @Transactional
	public String addProduct(ProductInVo product) {
		//xxxx校验 业务处理
	    String prex = PinyinUtils.getAlphaDefaultCode(product.getCompanyShortName()) + product.getProductClassify() + product.getMainProductFlag();
	    String productCode = generateProductCode(prex, 8);
	    return productCode;
	}
    /**
	 *生成编码
	*/
	private String generateProductCode(String productCode, int numLength) {
	    Long code = redisService.incr(ProductKeys.PRODUCT_CODE, productCode);
	    return productCode + String.format("%0" + numLength + "d", code);
	}
}
	/**
	 * 公司编码前缀
	 */
	public static ProductKeys PRODUCT_CODE = new ProductKeys(10, "product_code:");

关于获取首字母的工具类,可查看:汉语拼音pinyin4j处理工具类具体说明适用。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1126059.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx安装配置项目部署然后加SSL

个人操作笔记记录 第一步:把 nginx 的源码包nginx-1.8.0.tar.gz上传到 linux 系统 第二步:解压缩 tar zxvf nginx-1.8.0.tar.gz 第三步:进入nginx-1.8.0目录 使用 configure 命令创建一 makeFile 文件。 直接复制过去运行 ./configur…

考过PMP之后,要不要继续学CSPM?

在7年前拿下了PMP证书,但又在今年报名了CSPM中级的学习,身边很多人都疑问,为什么还要继续花钱考一个新出的证书?是不是闲的没事干?下面跟大家说下我的想法,仅作参考。 1)了解项目管理行业的新动…

OpenCV视频车流量识别详解与实践

视频车流量识别基本思想是使用背景消去算法将运动物体从图片中提取出来,消除噪声识别运动物体轮廓,最后,在固定区域统计筛选出来符合条件的轮廓。 基于统计背景模型的视频运动目标检测技术: 背景获取:需要在场景存在…

【Python微信机器人】第二篇:将python注入到其他进程

目录修整 目前的系列目录(后面会根据实际情况变动): 在windows11上编译python将python注入到其他进程并运行使用C写一个python的pyd库,用于实现inline hookPython ctypes库的使用使用ctypes主动调用进程内的任意函数使用汇编引擎调用进程内的任意函数(为了调用不遵…

pdf误删恢复如何恢复?分享4种恢复方法!

如何将pdf误删恢复?使用电脑的时候,经常会需要使用到pdf文件,但是有时候,因为一些操作上的失误,我们会丢失一些重要的文件。如果你不小心将pdf误删了,该如何进行恢复呢? PDF文件丢失的原因可以…

Bertopic 运行中报错记录

1、下载模型报错ConnectionError: (ProtocolError(‘Connection aborted.’, ConnectionResetError(54, ‘Connection reset by peer’)) 运行代码: topics, probabilities model.fit_transform(docs)报错内容: ConnectionError: (ProtocolError(‘C…

【Unity】渲染性能开挂GPU Animation, 动画渲染合批GPU Instance

GPU Instance和SRP Batcher合批渲染只对静态MeshRenerer有效,对SkinMeshRenderer无效。蒙皮动画性能堪忧,对于海量动画物体怎么解决呢?针对这个问题,GPU Animation就是一个常见又简单的解决方案。 GPU动画实现原理: …

【深圳1024开发者城市聚会定向征文】

在这个周末,我有幸参加了1024程序员节活动,这是一个专门为程序员们举办的活动,旨在庆祝程序员这个特殊的群体。在这个活动中,我不仅感受到了浓厚的编程氛围,还收获了许多宝贵的经验和知识。 活动在深圳湾科技生态园举…

漏洞复现--金和OASQL注入

免责声明: 文章中涉及的漏洞均已修复,敏感信息均已做打码处理,文章仅做经验分享用途,切勿当真,未授权的攻击属于非法行为!文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

坚固可靠的多合一轨道交通天线让您的赏秋路途不再枯燥

今年的法定节假日余额已清零,虽然国庆已过,但秋天正是出游的大好时节。在出游计划中,首先面临的就是交通工具的选择这个大难题,到底是选择自由度更高的自驾前往?还是更省心的公共交通?高铁上的信号质量依旧…

ATA-5510前置微小信号放大器在半导体测试中的具体应用

在现代电子技术领域,半导体器件的测试是非常重要的一环。而前置微小信号放大器在半导体测试中扮演着至关重要的角色。本文将介绍前置微小信号放大器在半导体测试中的原理和应用。 在半导体测试中,通常需要测试非常微弱的信号,这些信号可能受到…

大数据分析平台Splunk Enterprise结合cpolar实现公网远程访问

文章目录 前言1. 搭建Splunk Enterprise2. windows 安装 cpolar3. 创建Splunk Enterprise公网访问地址4. 远程访问Splunk Enterprise服务5. 固定远程地址 前言 Splunk Enterprise是一个强大的机器数据管理平台,可帮助客户分析和搜索数据,以及可视化数据…

福建泉州航海快艇蓝光三维扫描全尺寸测量船只外观设计三维建模-CASAIM中科广电

造船行业是一个与全球经济发展密切相关的关键行业。近年来,随着全球经济的快速发展,造船行业也不断进步和发展。快艇制造业作为小型、快速的船只的产业,所生产的船只通常用于娱乐、旅游、商业等方面,因此这种类型的快艇对于外观设…

科普:数控机床主轴的结构选型及维护保养

数控机床主轴是数控机床的重要组成部分,它的性能直接影响到数控机床的加工精度和加工效率。本文将详细介绍数控机床主轴的结构、性能指标、品牌选型以及维护保养等方面的知识,以便更好地了解和掌握数控机床主轴的相关知识。 一、数控机床主轴的结构 数…

react createElement 和 cloneElement 有什么区别?

前言 什么是react React是一个用于构建用户界面的JavaScript库。它旨在帮助开发人员构建可维护、高性能的应用程序界面。React的核心思想是组件化,它允许开发人员将用户界面划分为小块组件,每个组件负责自己的渲染和行为。这种组件化的方法使得代码更容易…

【python入门篇】字符串(4)

这一章节来说下字符串的使用,字符串是 Python 中最常用的数据类型,我们可以使用单引号( )或 双引号( " )来创建字符串,那么接下来就进入本章节的一个学习。 一、环境配置 我这边python的环境是3.7.8版本的&…

图像压缩(1)RGB888与RGB565图像

图像压缩(1)RGB888与RGB565图像 前言一. 图像数据格式1.1 不同RGB格式(1)RGB16(2)RGB24(3)RGB32(4)ARGB32 1.2 RGB565与RGB888对比(1)区别(2)各自优缺点 二. 图像格式转换2.1 取位与补位2.2 其他转换方法 三. 图像压缩3.1 G6压缩法(16位真彩色…

最新2023版完美可用的聚合支付系统源码,全开源无后门,适合二开

最新2023版完美可用的聚合易支付系统源码,全开源无后门,真正安全可用。 更新日志: 1.新增微信公众号消息提醒功能 2.重构转账付款功能,支持通过插件扩展 3.商户后台新增代付功能 4.后台新增付款记录列表 5.支付宝插件新增预…

城市公安可视化大数据展示平台预测预警,防患未然

在当今数字化、信息化的时代背景下,数字化浪潮席卷着全国各地公安系统,以数字孪生为底座的智慧公安数字孪生可视化管控平台已经成为公共安全领域的一大发展趋势,以其独特的优势为公安机关的日常管理和警务指挥带来了革命性的变革。 智慧公安解…

【FPGA】IIC协议通用主机接口的设计与实现详解

一、认识IIC IIC(I2C)协议是一种串行通信协议,用于连接微控制器和外围设备。IIC协议只需要两根信号线(时钟线SCL和数据线SDA)就能完成设备之间的通信;支持多主机和多从机通信,通过设备地址区分不…