Как управлять количеством кэша

«Как управлять количеством кэша» — вопрос из категории Архитектура, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Go можно управлять кэшированием через sync.Pool для объектов или ручное управление мапой с TTL. Для HTTP-кэша используйте httpcache или middleware с ручной реализацией. Пример с sync.Pool:

var pool = sync.Pool{
    New: func() interface{} {
        return make([]byte, 1024)
    },
}

func getBuffer() []byte {
    return pool.Get().([]byte)
}

func putBuffer(buf []byte) {
    pool.Put(buf)
}

Для сложных сценариев рассмотрите groupcache или ristretto. Ограничивайте размер кэша через:

  • фиксированное количество элементов
  • максимальный объем памяти
  • TTL (time-to-live) для записей