Sobes.tech
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
}

Ин усул оддӣ ва муассир аст барои аксари ҳолатҳо.