Intern — Junior
Έχεις χρησιμοποιήσει μηχανισμό caching στα έργα σου;
sobes.tech AI
Απάντηση από AI
Ναι, στα έργα Go συχνά χρησιμοποιείται η προσωρινή αποθήκευση (cache) για βελτίωση της απόδοσης και μείωση του φόρτου στους εξωτερικούς πόρους.
Για παράδειγμα, μπορείτε να χρησιμοποιήσετε δομές δεδομένων ενσωματωμένες, όπως το map, για μια απλή προσωρινή αποθήκευση στη μνήμη, ή βιβλιοθήκες τρίτων, όπως το golang-lru ή το groupcache.
Παράδειγμα απλής cache με χρήση 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("Τιμή στην cache:", val)
} else {
fmt.Println("Τιμή δεν βρέθηκε στην cache")
}
}
Αυτή η προσέγγιση βοηθά στην ταχεία επιστροφή συχνά ζητούμενων δεδομένων χωρίς επαναλαμβανόμενους υπολογισμούς ή κλήσεις στη βάση δεδομένων.