package interfaces import ( "context" "time" ) type Cacher interface { Get(ctx context.Context, key string) ([]byte, error) GetScan(ctx context.Context, key string) Scanner GetEx(ctx context.Context, key string, duration time.Duration) ([]byte, error) GetExScan(ctx context.Context, key string, duration time.Duration) Scanner // Set value 会被序列化, 优先使用 MarshalBinary 方法, 没有则执行 json.Marshal Set(ctx context.Context, key string, value any) error // SetEx value 会被序列化, 优先使用 MarshalBinary 方法, 没有则执行 json.Marshal SetEx(ctx context.Context, key string, value any, duration time.Duration) error Del(ctx context.Context, keys ...string) error } type Scanner interface { Scan(model any) error }