Incorporate remaining commands into batches

Signed-off-by: Stefan Botzenhart <stefan.botzenhart@dm.de>
pull/2565/head
Stefan Botzenhart 5 years ago
parent 8d160572cf
commit 23886511ba

@ -202,21 +202,22 @@ public class RedissonSessionRepository implements FindByIndexNameSessionReposito
String oldId = delegate.getId(); String oldId = delegate.getId();
String id = delegate.changeSessionId(); String id = delegate.changeSessionId();
Map<String, Object> oldState = map.readAllMap();
map.delete();
map = redisson.getMap(keyPrefix + id, map.getCodec());
map.putAll(oldState);
RBatch batch = redisson.createBatch(BatchOptions.defaults()); RBatch batch = redisson.createBatch(BatchOptions.defaults());
batch.getBucket(getExpiredKey(oldId)).remainTimeToLiveAsync(); batch.getBucket(getExpiredKey(oldId)).remainTimeToLiveAsync();
batch.getBucket(getExpiredKey(oldId)).deleteAsync(); batch.getBucket(getExpiredKey(oldId)).deleteAsync();
batch.getMap(map.toString()).readAllMapAsync();
batch.getMap(map.toString()).deleteAsync();
BatchResult<?> res = batch.execute(); BatchResult<?> res = batch.execute();
List<?> list = res.getResponses(); List<?> list = res.getResponses();
Long remainTTL = (Long) list.get(0); Long remainTTL = (Long) list.get(0);
Map<String, Object> oldState = (Map<String, Object>) list.get(2);
redisson.getBucket(getExpiredKey(id)).set("", remainTTL, TimeUnit.MILLISECONDS); RBatch batchNew = redisson.createBatch(BatchOptions.defaults());
batchNew.getMap(keyPrefix + id, map.getCodec()).putAllAsync(oldState);
batchNew.getBucket(getExpiredKey(id)).setAsync("", remainTTL, TimeUnit.MILLISECONDS);
batchNew.execute();
return id; return id;
} }

Loading…
Cancel
Save