日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

基于Redisson的RAtomicLong實現全局唯一工單號生成器

來源: 責編: 時間:2024-01-26 09:01:36 209觀看
導讀最近幾年,我一直從事的是運營平臺業務開發。每天,我們都需要處理大量的工單配置工作。為了生成工單號,我們建立了一張專用的數據庫表,用于記錄和生成工單號。每次創建工單時,我們會查詢這張表,根據年份字段、月份字段和模塊

最近幾年,我一直從事的是運營平臺業務開發。每天,我們都需要處理大量的工單配置工作。為了生成工單號,我們建立了一張專用的數據庫表,用于記錄和生成工單號。每次創建工單時,我們會查詢這張表,根據年份字段、月份字段和模塊編碼找到最大的自增序列號。隨后,我們將自增序列號加一,與模塊編碼、年月序列號拼接以生成工單號,并將相關信息寫入表中。這種方法一直使用得很順利,因為工單配置的量并不是特別大,一直都沒有出現問題。然而,最近我們為第三方提供了一個工單推送的接口,他們一次性推送了大量的工單,這導致不僅生成了許多重復工單號,而且還引起了接口性能方面的問題。因此,我們決定對工單號生成方式進行改進,本文我們將介紹下我們新的生成方法。54b28資訊網——每日最新資訊28at.com

實現思路

這次我們采用了 Redisson 的 RAtomicLong 來生成一個以固定字符加上年月為鍵的自增數。隨后,將自增數轉換為36進制字符串,以年月和36進制字符串拼接形成全局唯一的工單號。54b28資訊網——每日最新資訊28at.com

代碼實現

SerialIdService.java54b28資訊網——每日最新資訊28at.com

@Service@Slf4jpublic class SerialIdService {    private static final String ID_KEY = "xiuji:";    private static final int BASE_36 = 36;    private static final Integer SEQUENCE_LENGTH = 5;    @Resource    private RedissonClient redissonClient;    public String workSerialId() {        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyMM");        String dateStr = LocalDate.now().format(formatter);        //使用了Redisson的AtomicLong對象生成唯一序列號        RAtomicLong atomicLong = redissonClient.getAtomicLong(ID_KEY+dateStr);        //設置過期時間為35天        if(atomicLong.get() == 0){            atomicLong.expire(Duration.ofDays(35));        }        //將唯一序列號轉換為36進制的字符串,長度為4位,用于減少ID的長度        String sequenceStr = Long.toString(atomicLong.incrementAndGet(), BASE_36).toUpperCase();        //36進制的序列號若小于4位,則用0補齊高位        if (sequenceStr.length() < SEQUENCE_LENGTH) {            sequenceStr = String.format("%4s", sequenceStr).replace(' ', '0');;        }        String serialId = dateStr+sequenceStr;        log.info("生成的工單號:{}",dateStr+sequenceStr);        return dateStr+sequenceStr;    }}

生成的工單號示例:54b28資訊網——每日最新資訊28at.com

240121AXT6240121AXT7240121AXT8240121AXT9240121AXTA240121AXTB240121AXTC240121AXTD240121AXTE240121AXTF240121AXTG240121AXTH240121AXTI240121AXTJ

總結

通過Redisson的RAtomicLong,我們成功實現了一個簡單而強大的全局唯一工單號生成器。該生成器保證了唯一性,且在分布式環境中表現出色。在實際應用中,可以根據業務需求進行調整和擴展,以滿足更復雜的場景。54b28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-68323-0.html基于Redisson的RAtomicLong實現全局唯一工單號生成器

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: JDK17 與 JDK11 特性差異淺談

下一篇: Dalvik與ART的架構差異,你學會了嗎?

標簽:
  • 熱門焦點
  • 對標蘋果的靈動島 華為帶來實況窗功能

    繼蘋果的靈動島之后,華為也在今天正式推出了“實況窗”功能。據今天鴻蒙OS 4.0的現場演示顯示,華為的實況窗可以更高效的展現出實時通知,比如鎖屏上就能看到外賣、打車、銀行
  • Redmi Pad評測:紅米充滿野心的一次嘗試

    從Note系列到K系列,從藍牙耳機到筆記本電腦,紅米不知不覺之間也已經形成了自己頗有競爭力的產品體系,在中端和次旗艦市場上甚至要比小米新機的表現來得更好,正所謂“大丈夫生居
  • 帥氣純真少年!日本最帥初中生選美冠軍出爐

    日本第一帥哥初一生選美大賽冠軍現已正式出爐,冠軍是來自千葉縣的宗田悠良。日本一直熱衷于各種選美大賽,從&ldquo;最美JK&rdquo;起到&ldquo;最美女星&r
  • 28個SpringBoot項目中常用注解,日常開發、求職面試不再懵圈

    前言在使用SpringBoot開發中或者在求職面試中都會使用到很多注解或者問到注解相關的知識。本文主要對一些常用的注解進行了總結,同時也會舉出具體例子,供大家學習和參考。注解
  • 讓我們一起聊聊文件的操作

    文件【1】文件是什么?文件是保存數據的地方,是數據源的一種,比如大家經常使用的word文檔、txt文件、excel文件、jpg文件...都是文件。文件最主要的作用就是保存數據,它既可以保
  • 使用LLM插件從命令行訪問Llama 2

    最近的一個大新聞是Meta AI推出了新的開源授權的大型語言模型Llama 2。這是一項非常重要的進展:Llama 2可免費用于研究和商業用途。(幾小時前,swyy發現它已從LLaMA 2更名為Lla
  • 阿里大調整

    來源:產品劉有媒體報道稱,近期淘寶天貓集團啟動了近年來最大的人力制度改革,涉及員工績效、層級體系等多個核心事項,目前已形成一個初步的&ldquo;征求意見版&rdquo;:1、取消P序列
  • AMD的AI芯片轉單給三星可能性不大 與臺積電已合作至2nm制程

    據 DIGITIMES 消息,英偉達 AI GPU 出貨逐季飆升,接下來 AMD MI 300 系列將在第 4 季底量產。而半導體業內人士表示,近日傳出 AMD 的 AI 芯片將轉單給
  • iQOO 11S評測:行業唯一的200W標準版旗艦

    【Techweb評測】去年底,iQOO推出了“電競旗艦”iQOO 11系列,作為一款性能強機,該機不僅全球首發2K 144Hz E6全感屏,搭載了第二代驍龍8平臺及144Hz電競
Top 主站蜘蛛池模板: 马山县| 伊金霍洛旗| 荃湾区| 江阴市| 织金县| 韩城市| 华宁县| 满城县| 肇庆市| 建宁县| 丹东市| 海淀区| 原阳县| 措勤县| 巴东县| 安阳县| 乌什县| 奇台县| 西青区| 科技| 白玉县| 镇坪县| 葫芦岛市| 康定县| 平果县| 泾源县| 南陵县| 师宗县| 仙居县| 柞水县| 南丹县| 曲阳县| 韶关市| 黔南| 广安市| 香格里拉县| 兴文县| 镇江市| 禹州市| 东辽县| 子长县|