通用的數據庫主鍵生成器小工具

1.解決問題

1.1. 當數據量上升到一定地步之後,數據就需要進行分表存儲以及數據緩存(一般redis常見);

1.2. 數據有一般有唯一主鍵,分表後一般需要保證所有表的id的不衝突和一致.

2.使用方式 及特點:

2.1. 使用方式:

public class Util extends RedisSequenceFactory {

    
}

同時完成Util的代碼編寫即可。generateLongKey()返回Id主鍵,getStepLength()由子類返回步長;

2.2. 特點:擴展類需要進行類的初始化,否則無法通過編譯器編譯;

3.簡化的設計的代碼

import redis.clients.jedis.JedisCommands;

public abstract class RedisSequenceFactory {
    private  boolean inited = false;
    private  Long starterIndex;
    private  JedisCommands jedis;
    private  Class clazz;
    private RedisSequenceFactory() {

    }
    protected RedisSequenceFactory(Long starterIndex, JedisCommands jedis, Class clazz) {
        this.starterIndex = starterIndex;
        this.jedis = jedis;
        this.clazz = clazz;
        inited = true;
    }
    public Long generateLongKey() {
        String key = clazz.getName();
        long nextIndex;
        synchronized (jedis) {
            nextIndex = jedis.incrBy(key, getStepLength());
        }
        return nextIndex;
    }
    public abstract int getStepLength();
}

4.TIP:

提高性能的相關代碼可以自行實施,目前公司夠用了。等卡的時候在修改

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章