Это относится к команде 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
}