1. 程式人生 > >Spring Data Redis 二:RedisTemplate實現事物問題剖析和解決

Spring Data Redis 二:RedisTemplate實現事物問題剖析和解決

三、解決方案

 只能自己實現RedisCallBack底層,採用RedisTemplate的SesionCallback來完成在同一個Connection中,完成多個操作的方法:

SessionCallback<Object>   sessionCallback=new SessionCallback<Object>(){
  @Override
   public Object execute(RedisOperations operations) throws DataAccessException{
operations.multi();
operations.delete("test");
operations.opsForValue.set("test","2");
Object val=operations.exec();
return val;
}
}
StringRedisTemplate.execute(sessionCallback);

四、測試結果

          模擬多個執行緒呼叫,我採用了3個執行緒進行模擬測試:

執行緒3=================獲取key:test值為:1

執行緒2=================獲取key:test值為:1

執行緒1=================獲取key:test值為:1

執行緒3=================獲取key:test值為:1

執行緒2=================獲取key:test值為:1

執行緒3=================獲取key:test值為:1

執行緒1=================獲取key:test值為:2

執行緒2=================獲取key:test值為:2