使用 Redisson 将数据从一个 Redis 集群迁移到另一个集群
Migrate data from a Redis cluster to an other with Redisson
我想以编程方式将数据从旧的 Redis 集群迁移到新的集群,所以我这样做了:
legacyRedisClient.getKeys()
.getKeys()
.forEach(key -> {
LOGGER.info("Redis Migration : Migrating key {}", key);
Optional.of(legacyRedisClient.getBucket(key))
.filter(RObject::isExists)
.map(RBucket::get)
.ifPresent(value -> {
LOGGER.info("Redis Migration : Storing element with key {}", key);
RBucket<Object> bucket = encryptedRedisClient.getBucket(key);
bucket.set(value);
bucket.expire(48L, DAYS);
});
});
这个问题是,当我做 RBucket::get
时,Redisson 尝试用不一定在 class 路径中的 class 解码值(因为那由其他微服务设置)。
有没有办法在 Redisson 中禁用解码?或者更好的方法?
使用 ByteArrayCodec。示例:
RBucket<Object> bucket = encryptedRedisClient.getBucket(key, ByteArrayCodec.INSTANCE);
bucket.set(value);
bucket.expire(48L, DAYS);
我想以编程方式将数据从旧的 Redis 集群迁移到新的集群,所以我这样做了:
legacyRedisClient.getKeys()
.getKeys()
.forEach(key -> {
LOGGER.info("Redis Migration : Migrating key {}", key);
Optional.of(legacyRedisClient.getBucket(key))
.filter(RObject::isExists)
.map(RBucket::get)
.ifPresent(value -> {
LOGGER.info("Redis Migration : Storing element with key {}", key);
RBucket<Object> bucket = encryptedRedisClient.getBucket(key);
bucket.set(value);
bucket.expire(48L, DAYS);
});
});
这个问题是,当我做 RBucket::get
时,Redisson 尝试用不一定在 class 路径中的 class 解码值(因为那由其他微服务设置)。
有没有办法在 Redisson 中禁用解码?或者更好的方法?
使用 ByteArrayCodec。示例:
RBucket<Object> bucket = encryptedRedisClient.getBucket(key, ByteArrayCodec.INSTANCE);
bucket.set(value);
bucket.expire(48L, DAYS);