code: func Serialize(value interface{}) ([]byte, error) {
  	if data, ok := value.([]byte); ok {
  		return data, nil
  	}
  
  	switch v := reflect.ValueOf(value); v.Kind() {
  	case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
  		return []byte(strconv.FormatInt(v.Int(), 10)), nil
  	case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
  		return []byte(strconv.FormatUint(v.Uint(), 10)), nil
  	}
  
  	var b bytes.Buffer
  	encoder := gob.NewEncoder(&b)
  	if err := encoder.Encode(value); err != nil {
  		cacheLog.Error("Serialize: gob encoding failed", "value", value, "error", err)
  		return nil, err
  	}
  	return b.Bytes(), nil
  }
docs: // Serialize transforms the given value into bytes following these rules:
  //   - If value is a byte array, it is returned as-is.
  //   - If value is an int or uint type, it is returned as the ASCII representation
  //   - Else, encoding/gob is used to serialize