2017-12-11 11 views
0

私はredisをscalacacheに統合しようとしています。キーは通常の文字列ですが、値は、オブジェクト、セット[文字列]などのキャッシュこのredisサポート付きスカラキャッシュ

val cache: RedisCache = RedisCache(config.host, config.port) 
private implicit val scalaCache: ScalaCache[Array[Byte]] = ScalaCache(cacheService.cache) 

によって初期化されることができる。しかし、私はこのエラーを取得していプットの呼び出し中「[文字列を設定タイプのいずれかのコーデックが見つかりませんでした]とRepr " hereがそう示唆したように、私は私のキャッシュ入力用のコーデックを提供する必要があるように見える私は、後でも、私のクラスAを

class A extends Codec[Set[String], Array[Byte]] with GZippingBinaryCodec[Set[String]] 

を追加したのと同じエラーを投げています。私は何が欠けています。

+0

完全なコードスニペットを貼り付けてください。使用した変数は未定義です。 – KarateKid

答えて

1

が見えますおよびcirceのシリアル化。私はバージョン10で、次のように解決します。

implicit object SetBindaryCodec extends Codec[Any, Array[Byte]] { 
    override def serialize(value: Any): Array[Byte] = { 
     val stream: ByteArrayOutputStream = new ByteArrayOutputStream() 
     val oos = new ObjectOutputStream(stream) 
     oos.writeObject(value) 
     oos.close() 
     stream.toByteArray 
    } 

    override def deserialize(data: Array[Byte]): Any = { 
     val ois = new ObjectInputStream(new ByteArrayInputStream(data)) 
     val value = ois.readObject 
     ois.close() 
     value 
    } 
    } 

最新のPerks。バージョンをアップグレードし、誰かがそれを必要とする場合に備えてそれを掲示します。

1

あなたはlinkで述べたように、あなたはバイナリ形式で値をシリアル化するか:キルケを使用して

import scalacache.serialization.binary._ 

やJSONなど:そのバイナリで次のリリースで解決のよう

import scalacache.serialization.circe._ 
import io.circe.generic.auto._ 
関連する問題