redisx.go 1.3 KB

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