2 回答
TA贡献1802条经验 获得超4个赞
这是特定于MEMORY STATS
redis 命令的。其结果是一个数组,“有关内存使用情况的信息以指标及其各自的值的形式提供”。
由于没有“预定义”类型来对此进行建模,因此只需使用类型断言来获取 Go 中的切片,对其进行迭代,然后查找您感兴趣的键:"total.allocated"
。后续切片元素将是您要查找的值。
您可以这样做:
result, err := client.Do("MEMORY", "STATS").Result()
if err != nil {
// Handle error
return
}
if stats, ok := result.([]interface{}); ok {
for i := 0; i < len(stats); i += 2 {
if stats[i] == "total.allocated" && i+1 < len(stats) {
fmt.Println("total allocated memory:", stats[i+1])
}
}
}
len-1如果我们循环直到(而不是),我们可以简化循环len,因此我们不必检查i+1索引是否有效:
for i, max := 0, len(stats)-1; i < max; i += 2 {
if stats[i] == "total.allocated" {
fmt.Println("total allocated memory:", stats[i+1])
}
}
总分配内存的值是类型的值int64。如果您需要它作为数字,请使用另一个类型断言:
allocated := stats[i+1].(int64)
或者为了安全起见:
if allocated, ok := stats[i+1].(int64); ok {
// Use allocated
}
TA贡献1871条经验 获得超8个赞
在伪 Golang 中,它看起来像这样:
result, err := redis.StringMap(client.Do("MEMORY", "STATS"), err)
- 2 回答
- 0 关注
- 136 浏览
添加回答
举报