package main
import (
"context"
"encoding"
"encoding/json"
"fmt"
"log"
"github.com/go-redis/redis/v8"
)
var _ encoding.BinaryMarshaler = &Student{}
var _ encoding.BinaryUnmarshaler = &Student{}
type StudentStatus string
const (
StudentStatusCreated = StudentStatus("created")
StudentStatusDeleted = StudentStatus("deleted")
)
type Student struct {
Name string `json:"name"`
Status StudentStatus `json:"status"`
}
func (s *Student) MarshalBinary() (data []byte, err error) {
return json.Marshal(s)
}
func (s *Student) UnmarshalBinary(data []byte) error {
return json.Unmarshal(data, s)
}
func main() {
rdb := redis.NewClient(&redis.Options{
Addr: "172.18.0.2:6379",
Password: "redis",
})
var err error
ctx := context.Background()
if err = rdb.Set(ctx, "a", &Student{
Name: "n",
Status: StudentStatusCreated,
}, 0).Err(); err != nil {
log.Fatal(err)
}
s := &Student{}
if err = rdb.Get(ctx, "a").Scan(s); err != nil {
log.Fatal(err)
} else {
fmt.Printf("%+v", s)
}
}
![]()
![]()