update 优化 不强制覆盖序列化模式 使用每次赋值的方式 灵活变更序列化

This commit is contained in:
疯狂的狮子li
2023-01-03 13:54:16 +08:00
parent 0cc497f21f
commit 9ce29219d6

View File

@@ -15,6 +15,7 @@ import org.redisson.api.RBatch;
import org.redisson.api.RBucket;
import org.redisson.api.RBucketAsync;
import org.redisson.api.RedissonClient;
import org.redisson.client.codec.Codec;
import org.redisson.codec.JsonJacksonCodec;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
@@ -52,6 +53,11 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao {
*/
public ObjectMapper objectMapper;
/**
* 序列化方式
*/
public Codec codec;
/**
* redisson 客户端
*/
@@ -98,7 +104,7 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao {
}
// 开始初始化相关组件
redissonClient.getConfig().setCodec(new JsonJacksonCodec(objectMapper));
this.codec = new JsonJacksonCodec(objectMapper);
this.redissonClient = redissonClient;
this.isInit = true;
}
@@ -109,7 +115,7 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao {
*/
@Override
public String get(String key) {
RBucket<String> rBucket = redissonClient.getBucket(key);
RBucket<String> rBucket = redissonClient.getBucket(key, codec);
return rBucket.get();
}
@@ -123,11 +129,11 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao {
}
// 判断是否为永不过期
if(timeout == SaTokenDao.NEVER_EXPIRE) {
RBucket<String> bucket = redissonClient.getBucket(key);
RBucket<String> bucket = redissonClient.getBucket(key, codec);
bucket.set(value);
} else {
RBatch batch = redissonClient.createBatch();
RBucketAsync<String> bucket = batch.getBucket(key);
RBucketAsync<String> bucket = batch.getBucket(key, codec);
bucket.setAsync(value);
bucket.expireAsync(Duration.ofSeconds(timeout));
batch.execute();
@@ -152,7 +158,7 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao {
*/
@Override
public void delete(String key) {
redissonClient.getBucket(key).delete();
redissonClient.getBucket(key, codec).delete();
}
/**
@@ -160,7 +166,7 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao {
*/
@Override
public long getTimeout(String key) {
RBucket<String> rBucket = redissonClient.getBucket(key);
RBucket<String> rBucket = redissonClient.getBucket(key, codec);
long timeout = rBucket.remainTimeToLive();
return timeout < 0 ? timeout : timeout / 1000;
}
@@ -181,7 +187,7 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao {
}
return;
}
RBucket<String> rBucket = redissonClient.getBucket(key);
RBucket<String> rBucket = redissonClient.getBucket(key, codec);
rBucket.expire(Duration.ofSeconds(timeout));
}
@@ -192,7 +198,7 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao {
*/
@Override
public Object getObject(String key) {
RBucket<Object> rBucket = redissonClient.getBucket(key);
RBucket<Object> rBucket = redissonClient.getBucket(key, codec);
return rBucket.get();
}
@@ -206,11 +212,11 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao {
}
// 判断是否为永不过期
if(timeout == SaTokenDao.NEVER_EXPIRE) {
RBucket<Object> bucket = redissonClient.getBucket(key);
RBucket<Object> bucket = redissonClient.getBucket(key, codec);
bucket.set(object);
} else {
RBatch batch = redissonClient.createBatch();
RBucketAsync<Object> bucket = batch.getBucket(key);
RBucketAsync<Object> bucket = batch.getBucket(key, codec);
bucket.setAsync(object);
bucket.expireAsync(Duration.ofSeconds(timeout));
batch.execute();
@@ -236,7 +242,7 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao {
*/
@Override
public void deleteObject(String key) {
redissonClient.getBucket(key).delete();
redissonClient.getBucket(key, codec).delete();
}
/**
@@ -244,7 +250,7 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao {
*/
@Override
public long getObjectTimeout(String key) {
RBucket<String> rBucket = redissonClient.getBucket(key);
RBucket<String> rBucket = redissonClient.getBucket(key, codec);
long timeout = rBucket.remainTimeToLive();
return timeout < 0 ? timeout : timeout / 1000;
}
@@ -265,7 +271,7 @@ public class SaTokenDaoRedissonJackson implements SaTokenDao {
}
return;
}
RBucket<Object> rBucket = redissonClient.getBucket(key);
RBucket<Object> rBucket = redissonClient.getBucket(key, codec);
rBucket.expire(Duration.ofSeconds(timeout));
}