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:
提高性能的相关代码可以自行实施,目前公司够用了。等卡的时候在修改