package main import ( "context" "fmt" "net/http" "sync" "time" goredis "github.com/garyburd/redigo/redis" redis "github.com/go-redis/redis/v8" ) var ctx = context.Background() var redisdb *redis.Client var once sync.Once var pool *goredis.Pool func init() { pool = &goredis.Pool{ MaxIdle: 80, //最大空闲 MaxActive: 80, //0表示没有限制 ,最大连接数 Wait: true, IdleTimeout: 300, Dial: func() (goredis.Conn, error) { return goredis.Dial("tcp", "192.168.3.10:6000") }, } redisdb = GetInstance(redis.Options{ Addr: "192.168.3.10:6000", //集群模式一定要配置主节点的值 否则会报MOVED 4998 Password: "", // no password set DB: 0, // use default DB }) } //使用单例模式创建redis client func GetInstance(opt redis.Options) *redis.Client { once.Do(func() { redisdb = redis.NewClient(&opt) }) return redisdb } //使用redins-go循环查询1000次数 func sayHello(w http.ResponseWriter, r *http.Request) { nowtime := time.Now().UnixNano() defer elapsed(w, nowtime) fmt.Fprintln(w, "Hello") err := redisdb.Set(ctx, "key1", "value", 0).Err() if err != nil { panic(err) } //循环使用redis 读取数据 val, err := redisdb.Get(ctx, "key").Result() if err != nil { panic(err) } fmt.Println("key", val) } //使用goredis循环查询1000次数 func sayHello2(w http.ResponseWriter, r *http.Request) { nowtime := time.Now().UnixNano() defer elapsed(w, nowtime) fmt.Fprintln(w, "Hello2") //循环使用redis 读取数据 conn, err := goredis.Dial("tcp", "192.168.3.10:6000") if err != nil { fmt.Println("connect redis error :", err) return } // conn := pool.Get() defer conn.Close() _, err = conn.Do("SET", "name", "wd") if err != nil { fmt.Println("redis set error:", err) } name, err := goredis.String(conn.Do("GET", "name")) if err != nil { fmt.Println("redis get error:", err) } else { fmt.Printf("Got name: %s \n", name) } fmt.Println("key", name) } // 使用defer 关键字统计程序耗时时长 func elapsed(w http.ResponseWriter, beforeTime int64) { t := time.Now().UnixNano() - beforeTime fmt.Fprintln(w, t) } func main() { http.HandleFunc("/sayHello", sayHello) http.HandleFunc("/sayHello2", sayHello2) err := http.ListenAndServe(":9090", nil) if err != nil { fmt.Printf("http server failed, err:%v\n", err) return } }
原文:https://www.cnblogs.com/chongyao/p/14031939.html