0
私は、それぞれ100万、200万、300万の3つの要素を持っています。私はそれらをすべて同時に実行するようにredisに挿入し、合計実行時間は300万intの実行時間を超えないようにします。私はsync.Waitgroupを使ってみましたが、実行を高速化しません。ここに私の基本的なコードがあります。Redisに同時に挿入する
package main
import (
"log"
"strconv"
"time"
"gopkg.in/redis.v5"
)
func main() {
oneMillion := makeRange(1, 1000000)
twoMillion := makeRange(1000001, 3000000)
threeMillion := makeRange(3000001, 6000000)
elements := [][]int{oneMillion, twoMillion, threeMillion}
client := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "",
DB: 0,
DialTimeout: 60 * time.Second,
WriteTimeout: 60 * time.Second,
ReadTimeout: 60 * time.Second,
PoolTimeout: 60 * time.Second,
})
pipeline := client.Pipeline()
for _, elem := range elements {
for i := 0; i < len(elem); i++ {
key := "KEY:" + strconv.Itoa(elem[i])
val := "VAL:" + strconv.Itoa(elem[i])
cmd := pipeline.Set(key, val, 0)
if cmd.Err() != nil {
log.Fatal("cmd error: ", cmd.Err())
}
}
_, err := pipeline.Exec()
if err != nil {
log.Fatal("error: ", err)
}
}
}
func makeRange(min, max int) []int {
a := make([]int, max-min+1)
for i := range a {
a[i] = min + i
}
return a
}