我正在使用etaty rediscala(1.4.2)连接到Play 2.4中的Redis。我的代码如下:
override def getMember(token: String): Future[Option[Member]] = {
redisClient.get[Member](token)
}
但是,它显示了这个错误:
找不到类型models.Member的ByteString反序列化器。尝试为此类型实现隐式的ByteStringDeserializer。
我的成员如下:
case class Member(
memberId : Long = 0l,
email : String = "",
firstName : Option[String] = None,
lastName : Option[String] = None
)
object Member {
implicit val memberReads : Reads[Member] = Json.reads[Member]
implicit val memberWrites : Writes[Member] = Json.writes[Member]
}
感谢您的帮助。
答案 0 :(得分:3)
我找到了解决方案。我将Scala对象转换为Json并将其保存为Redis作为字符串。
object Member {
implicit val byteStringFormatter = new ByteStringFormatter[Member] {
def serialize(data: Member): ByteString = {
ByteString(Json.toJson(data).toString)
}
def deserialize(bs: ByteString): Member = {
val s = bs.utf8String
Json.fromJson[Member](Json.parse(s)).get
}
}
}