Sobes.tech
Back to questions
Intern — Junior
132

Использовал ли ты механизм кэширования в своих проектах?

Companies where asked
X5 groupX5 group

Answer from AI

sobes.tech AI

Да, в проектах на Go часто используется кэширование для повышения производительности и снижения нагрузки на внешние ресурсы.

Например, можно использовать встроенные структуры данных, такие как map, для простого кэша в памяти, или сторонние библиотеки, например, golang-lru или groupcache.

Пример простого кэша с использованием map и mutex для потокобезопасности:

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("Cached value:", val)
    } else {
        fmt.Println("Value not found in cache")
    }
}

Такой подход помогает быстро возвращать часто запрашиваемые данные без повторных вычислений или обращений к базе.