我遇到一个**context**应用场景问题,有点疑惑,来向各位先进请教。
我在某个**Redis**操作函数中,要将一系列**Key**的值进行修改。伪代码如下:
```
// 创建一个2秒超时的context
ctx, cancel := context.WithTimeout(context.Background(), time.Second * 2)
defer cancel()
// 获取所有匹配的Keys(数量不定)
keys, err := redis.Keys(ctx, "device_*")
// ...
// 循环,更新Key的值
for _, key := range keys {
newValue := getNewValue(key)
// 疑惑是下面这几句,假设循环可能有几千或上万次,
// 那么下面用到的context(也是设置2秒超时),是每次都创建一个新的?还是另有它法?
ctx, cancel := context.WithTimeout(context.Background(), time.Second * 2)
defer cancel()
_, err = redis.Set(ctx, key, newValue )
// ...
}
```
有疑问加站长微信联系(非本文作者)