Sobes.tech
Intern — Junior

Vai esi izmantojis kešēšanas mehānismu savos projektos?

sobes.tech AI

Atbilde no AI

Jā, Go projektos bieži izmanto kešatmiņu, lai uzlabotu veiktspēju un samazinātu ārējo resursu slodzi.

Piemēram, var izmantot iebūvētas datu struktūras, piemēram, kartes, vienkāršai atmiņas kešatmiņai, vai ārējas bibliotēkas, piemēram, golang-lru vai groupcache.

Vienkāršas kešatmiņas piemērs, izmantojot karti un mutex, lai nodrošinātu drošību vairākās pavedēs:

package main

import (
    "fmt"
    "sync"
)

type Cache struct {
    mu    sync.Mutex
    store map[string]string
}

func NewCache() *Cache {
    return &Cache{store: make(map[string]string)}
}

func (c *Cache) Get(key string) (string, bool) {
    c.mu.Lock()
    defer c.mu.Unlock()
    val, ok := c.store[key]
    return val, ok
}

func (c *Cache) Set(key, value string) {
    c.mu.Lock()
    defer c.mu.Unlock()
    c.store[key] = value
}

func main() {
    cache := NewCache()
    cache.Set("foo", "bar")

    if val, ok := cache.Get("foo"); ok {
        fmt.Println("Kešas vērtība:", val)
    } else {
        fmt.Println("Vērtība nav atrasta kešā")
    }
}

Šī pieeja palīdz ātri atgriezt bieži pieprasītos datus, neizmantojot atkārtotus aprēķinus vai piekļuves datu bāzei.