Overview
以下に記載されてる内容のことです。
go-redis を使って redis に値を set & get するときは encoding#BinaryMarshaler を実装する必要があるという話です。
Sample
type X struct {} func Set (key string, x X) error { opt := redis.Options{ // option setting } client := redis.NewClient(&opt) return client.Set(key, x, -1) }
これだと Setを Call するときに redis: can't marshal X(implement encoding.BinaryMarshaler...
というエラーが発生します。
カスタム struct を定義するときは encoding.BinaryMarshaler を実装することを求められるので以下のようにします。
type X struct {} func (x X) MarshalBinary() ([]byte, error) { return json.Marshal(r) } func (x X) UnmarshalBinary(data []byte) error { return json.Unmarshal(data, &r) } func Set (key string, x X) error { opt := redis.Options{ // option setting } client := redis.NewClient(&opt) return client.Set(key, x, -1) }