天天看點

多個項目共用同一個redis_redis如何實作多個項目間同一條資料的并發讀寫控制?...

@Scheduled(initialDelay = 1000, fixedDelay = 60000)

public void redisTest(){

Jedis jedis = jedisPool.getResource();

try{

jedis.set("red_packet_num","5000");

}catch (Exception e)

{

e.printStackTrace();

if (jedis != null) {

jedis.close();

}

}

finally {

if (jedis != null) {

jedis.close();

}

}

Lock lock=new ReentrantLock();

for(int i=0;i<2000;i++){

fixedThreadPool.execute(new Runnable() {

@Override

public void run() {

Jedis jedis = jedisPool.getResource();

try {

lock.lock();

String red_packet_num = jedis.get("red_packet_num");

int a = Integer.parseInt(red_packet_num) - 1;

jedis.set("red_packet_num", String.valueOf(a));

lock.unlock();

System.out.println("資料是:" + a+"目前線程是:"+Thread.currentThread().getName()+"目前時間"+ CommonUtil.getCurrentTimeFormatForHMS());

}

catch (Exception e){

e.printStackTrace();

if (jedis != null) {

jedis.close();

}

}

finally {

if (jedis != null) {

jedis.close();

}

}

}

});

}

}

代碼推薦調試看看,看處其中的處理操作邏輯,如何其中的推薦實踐做實際實踐看看吧,謝謝!