使用Redisson将数据从Redis集群迁移到另一个集群

时间:2019-10-18 09:01:50

标签: java redis 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尝试使用不一定在类路径中的类(因为它是由其他微服务设置的)来解码该值。

有没有办法在Redisson中禁用解码?还是更好的方法呢?

1 个答案:

答案 0 :(得分:1)

使用ByteArrayCodec。示例:

RBucket<Object> bucket = encryptedRedisClient.getBucket(key, ByteArrayCodec.INSTANCE);
bucket.set(value);
bucket.expire(48L, DAYS);