java - 使用 Redisson 将数据从 Redis 集群迁移到另一个集群
问题描述
我想以编程方式将数据从旧的 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 中禁用解码?或者更好的方法来做到这一点?
解决方案
使用 ByteArrayCodec。例子:
RBucket<Object> bucket = encryptedRedisClient.getBucket(key, ByteArrayCodec.INSTANCE);
bucket.set(value);
bucket.expire(48L, DAYS);
推荐阅读
- python - 使用 Python 从视频中提取文本
- angular - 如何找到最大值?
- kubernetes - 通过 kops 在 Kubernetes v1.9.10 上启用 Horizontal Pod Autoscaling
- java - Android热敏打印机阿拉伯语问题
- python - 买入更高时保持最低平均利润
- python - 当我试图读取二进制文件时,Python 在做什么?
- python - 将 pandas 数据框导出到 json 并返回到具有相同顺序的列的数据框
- powerbi - 当 Power BI 中存在空白时,测量的总计不正确
- angularjs - 如何在Angularjs中突出显示选定的行
- php - 仅允许特定 Woocommerce 结帐字段上的字母