Junior — Middle
Kako se može izvršiti ažuriranje sadržaja keš servisa?
sobes.tech АИ
Одговор од АИ
Обнова садржаја кеш услуге у Go-у обично се одвија кроз неколико приступа:
-
Директна обновa вредности по кључу — ако је кеш представљен као мапа или специјализована структура, вредност се може једноставно заменити по кључу.
-
Користећи TTL (Time To Live) — кеш се аутоматски ажурира након истека времена трајања уноса.
-
Механизам инвалидације — при промени података у извору, кеш се означава као застарео и ажурира се при следећем захтеву.
-
Позадинско ажурирање (refresh) — периодично се покреће горутина која ажурира кеш према распореду.
Пример једноставног ажурирања кеша коришћењем мапе и mutex-а за безбедност у више нитова:
import "sync"
type Cache struct {
mu sync.Mutex
store map[string]string
}
func (c *Cache) Update(key, value string) {
c.mu.Lock()
defer c.mu.Unlock()
c.store[key] = value
}
func (c *Cache) Get(key string) (string, bool) {
c.mu.Lock()
defer c.mu.Unlock()
val, ok := c.store[key]
return val, ok
}
На овај начин, ажурирање се одвија преко методе Update, која безбедно замењује садржај по кључу.