本文共 973 字,大约阅读时间需要 3 分钟。
Redis连接池实现
import ( "github.com/garyburd/redigo/redis" "os" "fmt" "strconv" "time")func main() { // Redis连接池配置 pool := &redis.Pool{ MaxIdle: 20, // 最大闲置连接数 MaxActive: 0, // 最大活动连接数(暂无上限) IdleTimeout: time.Second * 1000, // 空闲连接超时时间 Dial: func() (redis.Conn, error) { return redis.Dial("tcp", "127.0.0.1:6379") // Redis服务器地址 }, } // 关闭连接池资源 defer pool.Close() // 模拟多个客户端同时连接 for i := 0; i < 10; i++ { go func(pool *redis.Pool, i int) { // 获取连接 conn := pool.Get() defer conn.Close() // 执行Redis命令 reply, err := conn.Do("SET", "conn"+strconv.Itoa(i), i) if err != nil { fmt.Printf("操作失败:%v\n", err) return } // 获取结果 s, _ := redis.String(reply, err) fmt.Printf("操作结果:%v\n", s) }(pool, i) time.Sleep(3 * time.Second) // 强制等待,模拟并发 }
优化说明:
转载地址:http://yqdmz.baihongyu.com/