redis.go 685 B

12345678910111213141516171819202122232425262728293031323334
  1. package gredis
  2. import (
  3. "time"
  4. "github.com/IceWhaleTech/CasaOS/model"
  5. "github.com/gomodule/redigo/redis"
  6. )
  7. func GetRedisConn(m *model.RedisModel) *redis.Pool {
  8. redisConn := &redis.Pool{
  9. MaxIdle: m.MaxIdle,
  10. MaxActive: m.MaxActive,
  11. IdleTimeout: m.IdleTimeout * time.Second,
  12. Dial: func() (redis.Conn, error) {
  13. c, err := redis.Dial("tcp", m.Host)
  14. if err != nil {
  15. return nil, err
  16. }
  17. if m.Password != "" {
  18. if _, err := c.Do("AUTH", m.Password); err != nil {
  19. c.Close()
  20. return nil, err
  21. }
  22. }
  23. return c, err
  24. },
  25. TestOnBorrow: func(c redis.Conn, t time.Time) error {
  26. _, err := c.Do("PING")
  27. return err
  28. },
  29. }
  30. return redisConn
  31. }