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 關注
- 184 瀏覽
添加回答
舉報