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
相關文章: