【问题标题】:Migrate data from a Redis cluster to an other with Redisson使用 Redisson 将数据从 Redis 集群迁移到另一个集群
【发布时间】:2019-11-24 14:52:06
【问题描述】:

我想以编程方式将数据从旧的 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 中禁用解码?或者有更好的方法来做到这一点?

【问题讨论】:

  • 我 100% 确信有比天真的“get 1, put 1”方法更好的数据迁移方法。我建议您深入研究文档以查看是否有更多信息。

标签: java redis redisson


【解决方案1】:

使用 ByteArrayCodec。示例:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-14
    • 1970-01-01
    相关资源
    最近更新 更多