learning_go/go-code-samples/get-started-with-redis/pipeline.go
2025-12-20 10:21:45 +03:00

44 lines
1.2 KiB
Go

package main
import (
"context"
"fmt"
"github.com/redis/go-redis/v9"
)
// Task: Update the score and the challenges_completed
// for team Snarkdumbthimble that has finished challenge #1.
func pipeline(client *redis.Client) error {
ctx := context.Background()
_, err := client.Pipelined(ctx, func(pipe redis.Pipeliner) error {
err := pipe.HSet(ctx, "player:7", "score", 15, "challenges_completed", 1).Err()
if err != nil {
return err
}
err = pipe.HSet(ctx, "player:8", "score", 18, "challenges_completed", 1).Err()
if err != nil {
return err
}
err = pipe.HSet(ctx, "player:9", "score", 12, "challenges_completed", 1).Err()
return err
})
if err != nil {
return fmt.Errorf("pipelined failed: %w", err)
}
fmt.Printf("Player 7's score: %s, challenges completed: %s\n",
client.HGet(ctx, "player:7", "score").Val(),
client.HGet(ctx, "player:7", "challenges_completed").Val())
fmt.Printf("Player 8's score: %s, challenges completed: %s\n",
client.HGet(ctx, "player:8", "score").Val(),
client.HGet(ctx, "player:8", "challenges_completed").Val())
fmt.Printf("Player 9's score: %s, challenges completed: %s\n",
client.HGet(ctx, "player:9", "score").Val(),
client.HGet(ctx, "player:9", "challenges_completed").Val())
return nil
}