golang redis连接池
时间: 2023-08-30 12:10:53 浏览: 130
在 Golang 中使用 Redis 连接池可以提高 Redis 的性能,同时减少连接的开销。
以下是一个简单的 Redis 连接池实现:
```go
package main
import (
"fmt"
"github.com/gomodule/redigo/redis"
)
type RedisPool struct {
Pool *redis.Pool
}
func NewRedisPool(server, password string) *RedisPool {
return &RedisPool{
Pool: &redis.Pool{
MaxIdle: 10,
IdleTimeout: 240 * time.Second,
Dial: func() (redis.Conn, error) {
conn, err := redis.Dial("tcp", server, redis.DialPassword(password))
if err != nil {
return nil, err
}
return conn, err
},
},
}
}
func (rp *RedisPool) Get() redis.Conn {
return rp.Pool.Get()
}
func main() {
rp := NewRedisPool("localhost:6379", "")
conn := rp.Get()
defer conn.Close()
_, err := conn.Do("SET", "foo", "bar")
if err != nil {
fmt.Println(err)
}
value, err := redis.String(conn.Do("GET", "foo"))
if err != nil {
fmt.Println(err)
}
fmt.Println(value)
}
```
在上述代码中,我们使用了 `github.com/gomodule/redigo/redis` 包来实现 Redis 连接池。在 `NewRedisPool` 函数中,我们配置了连接池的最大空闲连接数和空闲连接的超时时间,以及 Dial 函数,它用于创建新的连接。
在 `main` 函数中,我们通过 `rp.Get()` 方法获取连接,并使用 `defer conn.Close()` 来确保连接在函数结束时被关闭。我们可以使用 `conn.Do` 方法来执行 Redis 命令。
这是一个简单的 Redis 连接池的实现,你可以根据自己的需求进行修改和扩展。
阅读全文