我遇到一个问题,即我的Redis密钥SCAN(带有通配符)似乎并不一致地返回所有值。它可以正常运行很多次,但并非始终都能正常工作。也许我不明白扫描应该如何工作。我正在使用redigo作为我的图书馆。
与通配符匹配的模式:
Redis中的键:
我基本上是从该GUID中寻找任何键,但是匹配似乎不一致。这是我用于模式匹配的代码。
//GetKeysFromPattern - The endpoint to retrieve a list of keys that match a pattern
func GetKeysFromPattern(pattern string) ([]string, error) {
tempConn := pool.Get()
defer tempConn.Close()
if tempConn.Err() == nil {
iter := 0
keys := []string{}
for {
arr, err := redis.Values(tempConn.Do("SCAN", iter, "MATCH", pattern))
if err != nil {
return keys, fmt.Errorf("error retrieving '%s' keys", pattern)
}
iter, _ = redis.Int(arr[0], nil)
k, _ := redis.Strings(arr[1], nil)
keys = append(keys, k...)
if iter == 0 {
break
}
}
return keys, nil
}
return nil, sharedstructs.InternalServerError{Msg: "No Connection To Redis So Returning nil"}
}