redis.go 649 B

123456789101112131415161718192021222324252627282930313233343536
  1. package redis
  2. import (
  3. "context"
  4. "github.com/go-redis/redis/v8"
  5. "sync"
  6. )
  7. var (
  8. once sync.Once
  9. )
  10. // Init 初始化redis客户端
  11. func Init(ctx context.Context, addr, password string, db int) *redis.Client {
  12. var internalClient *redis.Client
  13. once.Do(func() {
  14. internalClient = newCli(ctx, addr, password, db)
  15. })
  16. return internalClient
  17. }
  18. // New 创建redis客户端实例
  19. func newCli(ctx context.Context, addr, password string, db int) *redis.Client {
  20. cli := redis.NewClient(&redis.Options{
  21. Addr: addr,
  22. Password: password,
  23. DB: db,
  24. })
  25. cmd := cli.Ping(ctx)
  26. if err := cmd.Err(); err != nil {
  27. panic(err)
  28. }
  29. return cli
  30. }