Spring Data Redis 二:RedisTemplate實現事物問題剖析和解決
阿新 • • 發佈:2018-12-25
三、解決方案
只能自己實現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