1
0
mirror of https://github.com/redis/go-redis.git synced 2025-10-17 11:11:17 +03:00

Added batch process method to the pipeline (#3510)

* Added batch process method to the pipeline

* Added Process and BatchProcess tests

* Fix test matching
This commit is contained in:
Hristo Temelski
2025-09-09 18:10:17 +03:00
committed by GitHub
parent 65e1c22065
commit e0853aba63
2 changed files with 29 additions and 2 deletions

View File

@@ -30,9 +30,12 @@ type Pipeliner interface {
// If a certain Redis command is not yet supported, you can use Do to execute it.
Do(ctx context.Context, args ...interface{}) *Cmd
// Process puts the commands to be executed into the pipeline buffer.
// Process queues the cmd for later execution.
Process(ctx context.Context, cmd Cmder) error
// BatchProcess adds multiple commands to be executed into the pipeline buffer.
BatchProcess(ctx context.Context, cmd ...Cmder) error
// Discard discards all commands in the pipeline buffer that have not yet been executed.
Discard()
@@ -79,7 +82,12 @@ func (c *Pipeline) Do(ctx context.Context, args ...interface{}) *Cmd {
// Process queues the cmd for later execution.
func (c *Pipeline) Process(ctx context.Context, cmd Cmder) error {
c.cmds = append(c.cmds, cmd)
return c.BatchProcess(ctx, cmd)
}
// BatchProcess queues multiple cmds for later execution.
func (c *Pipeline) BatchProcess(ctx context.Context, cmd ...Cmder) error {
c.cmds = append(c.cmds, cmd...)
return nil
}

View File

@@ -114,6 +114,25 @@ var _ = Describe("pipelining", func() {
err := pipe.Do(ctx).Err()
Expect(err).To(Equal(errors.New("redis: please enter the command to be executed")))
})
It("should process", func() {
err := pipe.Process(ctx, redis.NewCmd(ctx, "asking"))
Expect(err).To(BeNil())
Expect(pipe.Cmds()).To(HaveLen(1))
})
It("should batchProcess", func() {
err := pipe.BatchProcess(ctx, redis.NewCmd(ctx, "asking"))
Expect(err).To(BeNil())
Expect(pipe.Cmds()).To(HaveLen(1))
pipe.Discard()
Expect(pipe.Cmds()).To(HaveLen(0))
err = pipe.BatchProcess(ctx, redis.NewCmd(ctx, "asking"), redis.NewCmd(ctx, "set", "key", "value"))
Expect(err).To(BeNil())
Expect(pipe.Cmds()).To(HaveLen(2))
})
}
Describe("Pipeline", func() {