67,512
社区成员
发帖
与我相关
我的任务
分享
public <T>T exec(Cmd<T> cmd){
try(Jedis jedis = masterPool.getResource()){
return cmd.exec(jedis);
}
}
public class SetCmd extends BaseCmd<String> {
public enum NXXX{
NX,XX
}
private int time;
private String nxxx;
private int state = 0b00;
public SetCmd(String key, Object value) {
super(key);
this.value = value;
}
public SetCmd ex(int seconds){
time = seconds;
state = state|0b01;
return this;
}
public SetCmd nxxx(NXXX nxxx){
if(nxxx!=null){
state = state | 0b10;
this.nxxx = nxxx.toString();
}
return this;
}
@Override
public String exec(Jedis jedis) {
switch (state) {
case 0b01:
return jedis.setex(key, time, String.valueOf(value));
case 0b10:
return jedis.set(key, String.valueOf(value), nxxx);
case 0b11:
return jedis.set(key, String.valueOf(value), nxxx, "EX", time);
default:
return jedis.set(key, String.valueOf(value));
}
}
@Override
public Pipeline setPipeCmd(Pipeline pipeline) {
switch (state) {
case 0b01:
pipeline.setex(key, time, String.valueOf(value));
case 0b10:
pipeline.set(key, String.valueOf(value), nxxx);
case 0b11:
pipeline.set(key, String.valueOf(value), nxxx, "EX", time);
default:
pipeline.set(key, String.valueOf(value));
}
return pipeline;
}
}