redis.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. package redisx
  2. import (
  3. "context"
  4. "log"
  5. "github.com/redis/go-redis/v9"
  6. "github.com/spf13/viper"
  7. )
  8. type redisConfig struct {
  9. Addr string // Addr 链接地址
  10. DB int // DB 数据库, 一般默认是0
  11. Password string // Password 密码
  12. // Channel 来控制订阅频道, 连接发送消息会发送到频道
  13. Channel string // Channel 订阅频道
  14. // ConnectKey 连接 key, websocket connect 创建时会在 redis 里保存信息,
  15. // 这里的 ConnectKey 相当于前缀保存在 redis 里的 key
  16. ConnectKey string
  17. }
  18. func RedisConnect() *redis.Client {
  19. cfg := readRedisConfig()
  20. addr := cfg.Addr
  21. rdb := redis.NewClient(&redis.Options{
  22. Addr: addr,
  23. Password: cfg.Password,
  24. DB: cfg.DB,
  25. })
  26. if err := rdb.Ping(context.Background()).Err(); err != nil {
  27. log.Fatalln(err)
  28. }
  29. log.Printf("Redis connected %s \n", addr)
  30. return rdb
  31. }
  32. func GetRedisConfig() redisConfig {
  33. return readRedisConfig()
  34. }
  35. func readRedisConfig() redisConfig {
  36. var cfg redisConfig
  37. if err := viper.UnmarshalKey("redis", &cfg); err != nil {
  38. log.Fatalln(err)
  39. }
  40. return cfg
  41. }