package redisv2 import ( "encoding/json" "github.com/pkg/errors" ) type RedisBatchCommands struct { Commands []Command } type Command struct { Command string Arguments []interface{} } func NewRedisBatchCommands() *RedisBatchCommands { result := RedisBatchCommands{} result.Commands = make([]Command, 0) return &result } func (rbc *RedisBatchCommands) Add(command ...Command) { rbc.Commands = append(rbc.Commands, command...) } func (rbc *RedisBatchCommands) AddPublish(key string, message interface{}) error { data, err := json.Marshal(message) if err != nil { return errors.WithStack(err) } rbc.Add(Command{ Command: "PUBLISH", Arguments: []interface{}{ChannelKey(key), string(data)}, }) return nil } func (rbc *RedisBatchCommands) IsEmpty() bool { return len(rbc.Commands) == 0 } func (rbc *RedisBatchCommands) Clear() { rbc.Commands = make([]Command, 0) }