将Redis ByteString转换为BasicDBObject

时间:2015-09-16 06:12:30

标签: java mongodb redis

我需要将序列化的Java Object(从Redis获取)转换为扩展com.mongodb.BasicDBObject(mongo-java-driver)的Java模型。

class Member extends BasicDBObject {
    public Member(DBObject doc) {
        super(doc.toMap());
    }
    public Member(BasicDBObject doc) {
        super(doc);
    }
    ...
}

我从Redis得到的是ByteString形式。

总之,我需要转换ByteString - > BasicDBObject

2 个答案:

答案 0 :(得分:1)

您应该使用中间模型来保留模型。 MongoDB的BasicDBObject基于LinkedHashMap,但很有可能最终得到的内部数据结构不是Java可序列化的。

DBObjectBSONObject都不会延伸Serializable。我建议你在Redis中存储JSON。快捷方式可以是在Redis中存储BSON而不是JSON(请参阅BasicBSONEncoder#encodeBasicBSONDecoder#readObject)。

答案 1 :(得分:0)

@ mp911de你是对的。好处是DBObject和BSONObject不扩展Serializable。换句话说,不需要为DBObject / BSONObject编写反序列化器。我找到了解决方案:

来自Redis的ByteString - >字节数组 - >对象 - >我的班级成员。