Junior — Middle
Кадом усулҳои кешгириро дар лоиҳаҳои худ истифода мебаред ва чаро?
sobes.tech AI
Ҷавоб аз AI
Дар Go, одатан барои кеширанӣ ба ин усулҳо такя мекунанд:
- Танзимоти дохилии структураҳои додаҳо бо ҳамоҳангсозӣ: масалан,
mapбоsync.RWMutexбарои дастрасии бехатар дар муҳити бисёрсӯзишворӣ. - Пакетҳои китобхонаҳои тарафи сеюм: масалан,
golang-lruбарои татбиқи кеши LRU, ки автоматӣ камтар истифодашудаҳоро хориҷ мекунад. - sync.Map: харитаи бехатар барои бисёрсӯзишворӣ аз китобхонаи стандартӣ, ки барои кешиҳо бо рақобати баланд мувофиқ аст.
Танзимот вобаста ба вазифа:
- Барои кеши содда бо назорати дастрасӣ —
map+sync.RWMutex. - Барои кеш бо маҳдудияти андоза ва хориҷкунии автоматӣ — кеши LRU аз китобхонаҳои тарафи сеюм.
- Барои ҳолатҳои баландсифат бо хондани зуд ва навиштани кам —
sync.Map.
Маслиҳат барои кеши содда бо 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
}
Ин усул оддӣ ва муассир аст барои аксари ҳолатҳо.