欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Redis實現(xiàn)編碼生成規(guī)則方式

 更新時間:2024年10月10日 15:28:01   作者:Baichi_00  
在自動生成編碼時應采用“MD+年月日+4位序列號”的規(guī)則,如“MD202310130001”,為避免使用隨機序列號導致的重復編碼,建議使用從0開始的自增序列號,此外,使用Redis的incrBy功能實現(xiàn)序列號自增,可以有效提高效率和降低實現(xiàn)難度

適用場景

新增數(shù)據(jù)后自動生成編碼,生成規(guī)則為MD + 年月日 + 4位序列號

如MD202310130001

場景分析

此場景需要注意的就是后四位序列號如果使用隨機4位數(shù)字,極大可能會生成重復的編碼,從而影響整個業(yè)務,所以最好是使用從0開始自增,不僅避免的隨機生成重復編碼的可能,而且還方便使用人員根據(jù)編碼獲取到有用信息。

功能實現(xiàn)

    private static final String PREFIX = "MD"; // 前綴
    private static final String DATE_FORMAT = "yyyyMMdd"; // 年月日格式
    /**
     * 利用Redis生成編碼 (MD202310130001)
     * @return
     */
    private String generateTemplateNumber(){
        SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
        String currentDate = dateFormat.format(new Date());
        //組裝Redis的key(自定義字符串 + 當天的時間)
        String key = String.format(RedisKeyConstants.TASK_TEMPLATE_CODE, currentDate);
        Integer cache = cacheService.getCache(key, Integer.class);
        String templateCode = generateTemplateCode(cache);
        cacheService.incrBy(key,NumberUtils.INTEGER_ONE,ONE_DAY);
        return templateCode;
    }



    /**
     * 根據(jù)當前最大值生成編碼(可寫在工具類中)
     * @return
     */
    public String generateTemplateCode(Integer num) {
        if (ObjectUtils.isEmpty(num)){
            num = 0;
        }
        AtomicInteger sequence = new AtomicInteger(num);
        // 獲取當前日期
        SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
        String currentDate = dateFormat.format(new Date());
        // 生成4位序列號
        int currentSequence = sequence.incrementAndGet();
        String sequenceStr = String.format("%04d", currentSequence);

        // 組裝編碼
        return PREFIX + currentDate + sequenceStr;
    }

總結(jié)

相比查詢數(shù)據(jù)庫中編碼的最大值,然后再+1,效率更加高,代碼實現(xiàn)難度更加低,因為查詢數(shù)據(jù)庫最大值,然后+1,可能要考慮不同天日期的處理,總之,下次遇到有這樣類似編碼生成的需求,直接用Redis的incrBy是不錯之舉

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Redis數(shù)據(jù)庫的安裝和配置教程詳解

    Redis數(shù)據(jù)庫的安裝和配置教程詳解

    這篇文章主要介紹了Redis數(shù)據(jù)庫的安裝和配置?,主要包括Linux環(huán)境安裝Redis和windows環(huán)境安裝Redis,redis客戶端安裝方法,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下
    2022-05-05
  • windows下使用redis requirepass認證不起作用的解決方法

    windows下使用redis requirepass認證不起作用的解決方法

    今天小編就為大家分享一篇windows下使用redis requirepass認證不起作用的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 詳解Redis瘦身指南

    詳解Redis瘦身指南

    Redis應該是開發(fā)者最常用的緩存服務器了,它豐富的數(shù)據(jù)結(jié)構,快速高效的內(nèi)存操作能幫助開發(fā)者迅速完成復雜功能的設計,作為一個內(nèi)存型數(shù)據(jù)庫,Redis經(jīng)常會遇到內(nèi)存問題,今天我們來談一下Redis常見的內(nèi)存滿的問題,介紹一下給 Redis “瘦身”的通用方式。
    2021-05-05
  • 通過 Redis 實現(xiàn) RPC 遠程方法調(diào)用(支持多種編程語言)

    通過 Redis 實現(xiàn) RPC 遠程方法調(diào)用(支持多種編程語言)

    這篇文章主要介紹了通過 Redis 實現(xiàn) RPC 遠程方法調(diào)用,支持多種編程語言,本文就以Ruby和Python為例,給出了實現(xiàn)代碼,需要的朋友可以參考下
    2014-09-09
  • redis實現(xiàn)加鎖的幾種方法示例詳解

    redis實現(xiàn)加鎖的幾種方法示例詳解

    這篇文章主要給大家介紹了關于redis實現(xiàn)加鎖的幾種方法,加鎖命令分別是INCR、SETNX和SET,文中給出了詳細的示例代碼,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-09-09
  • redis主從復制的原理及實現(xiàn)

    redis主從復制的原理及實現(xiàn)

    Redis主從復制是一種數(shù)據(jù)同步機制,它通過將一個Redis實例的數(shù)據(jù)復制到其他Redis,本文主要介紹了redis主從復制的原理及實現(xiàn),具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Redis數(shù)據(jù)一致性問題的三種解決方案

    Redis數(shù)據(jù)一致性問題的三種解決方案

    Redis(Remote?Dictionary?Server?),是一個高性能的基于Key-Value結(jié)構存儲的NoSQL開源數(shù)據(jù)庫,大部分公司采用Redis來實現(xiàn)分布式緩存,用來提高數(shù)據(jù)查詢效率,本文就給大家介紹三種Redis數(shù)據(jù)一致性問題的解決方案,需要的朋友可以參考下
    2023-07-07
  • Redis實現(xiàn)庫存扣減的示例代碼

    Redis實現(xiàn)庫存扣減的示例代碼

    在日常開發(fā)中有很多地方都有類似扣減庫存的操作,本文主要介紹了Redis實現(xiàn)庫存扣減的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2023-07-07
  • 淺談Redis分布式鎖的正確實現(xiàn)方式

    淺談Redis分布式鎖的正確實現(xiàn)方式

    這篇文章主要介紹了淺談Redis分布式鎖的正確實現(xiàn)方式,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-05-05
  • Redis中Scan命令的踩坑實錄

    Redis中Scan命令的踩坑實錄

    這篇文章主要給大家介紹了關于Redis中Scan命令踩坑的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2020-07-07

最新評論