RedisTemplate redisTemplate = redisOps.getTemplate();
RedisSerializer<String> keyRs = redisTemplate.getKeySerializer();
RedisSerializer<String> hashKeySerializer = redisTemplate.getHashKeySerializer();
RedisSerializer<List<SwarmRobotsDO>> hashValueSerializer = redisTemplate.getHashValueSerializer();
redisTemplate.execute(new RedisCallback<Boolean>() {
@Override
public Boolean doInRedis(RedisConnection connection) throws DataAccessException {
try{
Object nativeConnection = connection.getNativeConnection();
String hashKey = SwarmRobotsCacheKeyContants.SWARM_ROBOTS_REF_SWARM_KEY_V2 + uuidKey;
byte[] key = hashKey.getBytes(StandardCharsets.UTF_8);
if(nativeConnection instanceof RedisAsyncCommands){
RedisAsyncCommands command = (RedisAsyncCommands) nativeConnection;
RedisAsyncCommands rac = command.getStatefulConnection().async();
swarmRobotsRefMapper.forEach((k, v) -> {
if(CollUtil.isEmpty(v)){
v = new ArrayList<>();
}
// byte[] keyByte = k.getBytes(StandardCharsets.UTF_8);
// String json = JSON.toJSONString(v);
// json = "[\"java.util.ArrayList\"," + json + "]";
// byte[] valueByte = json.getBytes(StandardCharsets.UTF_8);
// rac.hset(key, keyByte, valueByte);
rac.hset(keyRs.serialize(hashKey),hashKeySerializer.serialize( k),hashValueSerializer.serialize(v));
});
rac.flushCommands();
}else if(nativeConnection instanceof RedisAdvancedClusterAsyncCommands){
RedisAdvancedClusterAsyncCommands clusterAsyncCommands = (RedisAdvancedClusterAsyncCommands) nativeConnection;
RedisAdvancedClusterAsyncCommands rac = clusterAsyncCommands.getStatefulConnection().async();
swarmRobotsRefMapper.forEach((k, v) -> {
if(CollUtil.isEmpty(v)){
v = new ArrayList<>();
}
// byte[] keyByte = k.getBytes(StandardCharsets.UTF_8);
// String json = JSON.toJSONString(v);
// json = "[\"java.util.ArrayList\"," + json + "]";
// byte[] valueByte = json.getBytes(StandardCharsets.UTF_8);
// rac.hset(key, keyByte, valueByte);
rac.hset(keyRs.serialize(hashKey),hashKeySerializer.serialize( k),hashValueSerializer.serialize(v));
});
rac.flushCommands();
}else{
log.error("nativeConnection type >> " + nativeConnection);
}
return true;
}catch (Exception e) {
log.error("swarmRobotsRefMapper setCache fail", e);
}finally {
connection.close();
}
return false;
}
});