gpt4 book ai didi

go - 并发插入到Redis

转载 作者:可可西里 更新时间:2023-11-01 11:27:58 25 4
gpt4 key购买 nike

我有三个元素,分别由 100 万、200 万和 300 万个整数组成。我想将它们插入到 redis 中,以便它们同时发生并且总执行时间不大于 300 万个 int 的执行时间。我尝试使用 sync.Waitgroup 但它不会加快执行速度。这是我的基本代码。

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
}

最佳答案

或多或少,redis 上的每个操作都是原子的,即在任何给定时间,redis 服务器上只会执行一个操作。因此理论上,如果您想在 Redis 服务器上执行 300 万个集合操作,所有这些操作都将连续发生。

关于go - 并发插入到Redis,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43962874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com