2
0

redis.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package initialize
  2. import (
  3. "context"
  4. "github.com/flipped-aurora/gin-vue-admin/server/config"
  5. "github.com/flipped-aurora/gin-vue-admin/server/global"
  6. "github.com/redis/go-redis/v9"
  7. "go.uber.org/zap"
  8. )
  9. func initRedisClient(redisCfg config.Redis) (redis.UniversalClient, error) {
  10. var client redis.UniversalClient
  11. // 使用集群模式
  12. if redisCfg.UseCluster {
  13. client = redis.NewClusterClient(&redis.ClusterOptions{
  14. Addrs: redisCfg.ClusterAddrs,
  15. Password: redisCfg.Password,
  16. })
  17. } else {
  18. // 使用单例模式
  19. client = redis.NewClient(&redis.Options{
  20. Addr: redisCfg.Addr,
  21. Password: redisCfg.Password,
  22. DB: redisCfg.DB,
  23. })
  24. }
  25. pong, err := client.Ping(context.Background()).Result()
  26. if err != nil {
  27. global.GVA_LOG.Error("redis connect ping failed, err:", zap.String("name", redisCfg.Name), zap.Error(err))
  28. return nil, err
  29. }
  30. global.GVA_LOG.Info("redis connect ping response:", zap.String("name", redisCfg.Name), zap.String("pong", pong))
  31. return client, nil
  32. }
  33. func Redis() {
  34. redisClient, err := initRedisClient(global.GVA_CONFIG.Redis)
  35. if err != nil {
  36. panic(err)
  37. }
  38. global.GVA_REDIS = redisClient
  39. }
  40. func RedisList() {
  41. redisMap := make(map[string]redis.UniversalClient)
  42. for _, redisCfg := range global.GVA_CONFIG.RedisList {
  43. client, err := initRedisClient(redisCfg)
  44. if err != nil {
  45. panic(err)
  46. }
  47. redisMap[redisCfg.Name] = client
  48. }
  49. global.GVA_REDISList = redisMap
  50. }