go-redis/redis · error
redis: can't unmarshal %T (consider implementing BinaryUnmar
Error message
redis: can't unmarshal %T (consider implementing BinaryUnmarshaler)
What it means
Error "redis: can't unmarshal %T (consider implementing BinaryUnmarshaler)" thrown in go-redis/redis.
Source
Thrown at internal/proto/scan.go:124
return nil
case *time.Time:
var err error
*v, err = time.Parse(time.RFC3339Nano, util.BytesToString(b))
return err
case *time.Duration:
n, err := util.ParseInt(b, 10, 64)
if err != nil {
return err
}
*v = time.Duration(n)
return nil
case encoding.BinaryUnmarshaler:
return v.UnmarshalBinary(b)
case *net.IP:
*v = b
return nil
default:
return fmt.Errorf(
"redis: can't unmarshal %T (consider implementing BinaryUnmarshaler)", v)
}
}
func ScanSlice(data []string, slice interface{}) error {
v := reflect.ValueOf(slice)
if !v.IsValid() {
return fmt.Errorf("redis: ScanSlice(nil)")
}
if v.Kind() != reflect.Ptr {
return fmt.Errorf("redis: ScanSlice(non-pointer %T)", slice)
}
v = v.Elem()
if v.Kind() != reflect.Slice {
return fmt.Errorf("redis: ScanSlice(non-slice %T)", slice)
}
next := makeSliceNextElemFunc(v)View on GitHub (pinned to 36d97525cd)
Solutions
- Implement encoding.BinaryUnmarshaler on the destination type
- Scan into a supported primitive type instead
When it happens
Trigger: Thrown at internal/proto/scan.go:124 when the library encounters an invalid state.
Common situations: Use string/[]byte destinations and decode explicitly for custom types.
AI-assisted analysis of go-redis/redis@36d97525cd (2026-08-06).
Data as JSON: /data/errors/4f3bff1616cfd041.json.
Report an issue: GitHub.