Sobes.tech
Назад к вопросам
Junior — Middle
101

Можешь привести примеры алгоритмов использования при обновлении данных в кэше?

Компании, где спрашивали
КасперскийКасперский

Ответ от нейросети

sobes.tech AI

При обновлении данных в кэше часто применяются следующие алгоритмы:

  • Write-through: данные записываются одновременно и в кэш, и в основное хранилище.
  • Write-back (Write-behind): данные сначала записываются в кэш, а обновление основного хранилища происходит позже.
  • Cache invalidation: при изменении данных в основном хранилище кэш помечается как устаревший и обновляется при следующем запросе.
  • Time-to-live (TTL): кэш автоматически обновляется или удаляется после истечения заданного времени.

Пример на Go для TTL обновления кэша:

cache := make(map[string]CacheItem)

// CacheItem содержит данные и время истечения

type CacheItem struct {
    Data      interface{}
    ExpiresAt time.Time
}

func GetFromCache(key string) (interface{}, bool) {
    item, found := cache[key]
    if !found || time.Now().After(item.ExpiresAt) {
        return nil, false
    }
    return item.Data, true
}

func SetToCache(key string, data interface{}, duration time.Duration) {
    cache[key] = CacheItem{Data: data, ExpiresAt: time.Now().Add(duration)}
}