Junior — Middle
Можеш ли да дадеш примери за алгоритми, използвани при актуализиране на данни в кеша?
sobes.tech AI
Отговор от AI
При актуализиране на данни в кеша често се прилагат следните алгоритми:
- Write-through: данните се записват едновременно в кеша и в основното хранилище.
- Write-back (Write-behind): данните първо се записват в кеша, а актуализацията на основното хранилище се извършва по-късно.
- 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)}
}