大量のユーザー-Redis接続プールの紹介と原理


package main
import “fmt”
/*距離、商品情報を格納する商品名、価格、生産日に対応するcrud操作を完了する
説明:GolangによるRedis操作により、Redisによるプール接続も可能であり、プロセスは以下の通りである:1.一定数の接続を初期化し、接続プール2に入れる.GoがRedisを操作する必要がある場合は、Redis接続プールから直接接続を除去すればよい.3.これにより、一時的にRedis接続を取得する時間を節約し、効率を向上させることができる.4.概略図
Redis接続プール説明:GolangでRedisを操作することにより、Redis接続プールを経由することも可能である.流れは以下の通りである:1)予め一定数の接続を初期化し、接続プール2に入れる)GOがRedisを操作する必要がある場合、直接Redis接続プールから接続を除去すればよい.3)これにより、一時的にRedis接続を取得する時間を節約し、効率を向上させることができる.
コアコード:var pool*redis.Pool pool=&redis.Pool{Maxldle:8,//最大アイドル接続数MaxActive:0,//はデータベースとの最大接続数を表し,0はldle Timeout:100,最大アイドル時間Dial:func()(redis.conn,error){//接続のコードを初期化し,どのipに接続するredis return redis.Dial(「tcp」,「localhost 6379」)c:=pool.Get()/接続プールから接続poolを取り出します.Close()/接続プールを閉じます.接続プールを閉じると、接続プールから接続を取り出すことができません.*///グローバルなpool var pool*redisを定義します.Pool//プログラムを起動すると、接続プールfunc init(){pool=&redis.Pool{MaxIdle:8,//最大アイドル接続数MaxActive:0,//データベースとの最大接続数を表し、0はIdleTimeout:100を制限しないことを示し、//最大アイドル時間Dial:func()(redis,Conn,error)//接続を初期化するコード、どのipに接続するredis return redis.Dial("tcp","localhost:6379")
	},

}

}func main(){//poolから接続conn:=pool.Get()defer conn.close()を先に取り出します.
 _,err:=conn.Do("Set","name","   ")
 if err!=nil{
 	fmt.Println("conn.Do err=",err)
 	return
 }

 //      POOL    ,            
 pool.Close()//   
 conn2:=pool.Get()//   ,       

 _,err=conn.Do("Set","name","   ")
 if err!=nil{
	 fmt.Println("conn.Do err=",err)
	 return
 }

 //  
r,err:=redis.String (conn.Do("Get","name"))
if err!=nil{
	fmt.Println("conn.Do err=",err)
	return
}
fmt.Println("r=",r)
//      POOL    ,            

fmt.Println("conn2=",conn2)

}