Junior — Middle
Jaké metody cachování preferujete používat ve svých projektech a proč?
sobes.tech AI
Odpověď od AI
V Go se často používají následující přístupy k ukládání do mezipaměti:
- Vestavěné datové struktury s synchronizací: například
mapssync.RWMutexpro bezpečný přístup ve vícevláknovém prostředí. - Knihovní balíčky třetích stran: například
golang-lrupro implementaci LRU cache, která automaticky odstraňuje nejméně používané prvky. - sync.Map: bezpečná mapa z knihovny standardu, vhodná pro cache s vysokou konkurencí.
Preferované řešení závisí na úkolu:
- Pro jednoduchou cache s kontrolou přístupu —
map+sync.RWMutex. - Pro cache s omezením velikosti a automatickým odstraňováním — LRU cache z knihoven třetích stran.
- Pro vysokovýkonné případy s častým čtením a vzácným zápisem —
sync.Map.
Příklad jednoduché cache s sync.RWMutex:
type Cache struct {
mu sync.RWMutex
data map[string]interface{}
}
func (c *Cache) Get(key string) (interface{}, bool) {
c.mu.RLock()
defer c.mu.RUnlock()
val, ok := c.data[key]
return val, ok
}
func (c *Cache) Set(key string, value interface{}) {
c.mu.Lock()
defer c.mu.Unlock()
c.data[key] = value
}
Tento přístup je jednoduchý a efektivní ve většině případů.