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:
提高性能的相關代碼可以自行實施,目前公司夠用了。等卡的時候在修改