Redis连接池

198 阅读1分钟

什么是连接池?

连接池是一种管理数据库连接的技术。在传统的数据库连接方式中,每次需要与数据库建立连接时都会创建一个新的连接,完成操作后再销毁该连接。这种方式在高并发场景下效率较低,因为连接的创建和销毁需要消耗较多的资源和时间。

假设高性能服务器端处理redis操作需要1ms,通信建立和释放就需要39ms,显然这限制了redis的性能

连接池解决了这个问题,它在应用程序启动时预先创建一定数量的连接,并将这些连接保存在连接池中。应用程序需要连接时,直接从连接池中获取一个连接进行数据库操作;操作完成后,将连接归还给连接池,而不是销毁该连接。这样可以减少连接的创建和销毁次数,提高数据库操作效率。

package main

import (
   "fmt"
   "github.com/gomodule/redigo/redis"
   "time"
)

var rds redis.Conn

func RedisPollInit() *redis.Pool {
   return &redis.Pool{
      MaxIdle:     5, //最大空闲数
      MaxActive:   0, //最大连接数,0不设上
      Wait:        true,
      IdleTimeout: time.Duration(1) * time.Second, //空闲等待时间
      Dial: func() (redis.Conn, error) {
         c, err := redis.Dial("tcp", "127.0.0.1:6379") //redis IP地址
         if err != nil {
            fmt.Println(err)
            return nil, err
         }
         return c, err
      },
   }
}

func RedisInit() {
   rds = RedisPollInit().Get()
}

func RedisClose() {
   _ = rds.Close()
}