go-redis模块自带连接池,在启动阶段如果没有请求的话则不会主动创建连接。因此,如果想在启动阶段检测连接是否可创建,可以调用Ping()函数,示例如下:
package main
import (
"fmt"
"github.com/go-redis/redis"
"net/http"
)
func main() {
client := redis.NewClient(&redis.Options{
Addr: "192.168.16.243:6379",
Password: "",
DB: 0,
})
defer client.Close()
poolstats := client.PoolStats()
fmt.Printf("总连接数=%d,空闲连接数=%d,已经移除的连接数=%d\n",
poolstats.TotalConns,
poolstats.IdleConns,
poolstats.StaleConns)
//可连接性检测
_, err := client.Ping().Result()
if err != nil {
fmt.Printf("%v\n", err)
return
}
poolstats = client.PoolStats()
fmt.Printf("总连接数=%d,空闲连接数=%d,已经移除的连接数=%d\n",
poolstats.TotalConns,
poolstats.IdleConns,
poolstats.StaleConns)
http.ListenAndServe(":8080", nil)
}
当目标服务器不可连接时,则报“dial tcp 192.168.16.243:6379: i/o timeout”
[root@dev tutorial]# go run goredis.go
总连接数=0,空闲连接数=0,已经移除的连接数=0
dial tcp 192.168.16.243:6379: i/o timeout
当目标服务器可连接,但对应端口上没有redis服务,则报“dial tcp 192.168.16.243:6379: connect: connection refused”
[root@dev tutorial]# go run goredis.go
总连接数=0,空闲连接数=0,已经移除的连接数=0
dial tcp 192.168.16.243:6379: connect: connection refused
当连接成功时,输出如下,
[root@dev tutorial]# go run goredis.go
总连接数=0,空闲连接数=0,已经移除的连接数=0
总连接数=1,空闲连接数=1,已经移除的连接数=0
相关文章: