Zusammenfassung: Es gibt viele Möglichkeiten, Cache-Vorgänge mit der Go-Sprache durchzuführen, einschließlich: sync.Map: Integrierte parallelitätssichere Zuordnung, geeignet für kleine Caches. go-cache: Eine Bibliothek eines Drittanbieters, die erweiterte Funktionen wie Räumung, Ablauf und Zeitüberschreitungen bietet. In praktischen Anwendungen kann Go-Cache zum Zwischenspeichern von Datenbankabfrageergebnissen verwendet werden, wodurch die Anwendungsleistung verbessert und Datenbankabfragevorgänge reduziert werden.
Daten mit Golang in den Cache schreiben
In verteilten Systemen ist Caching eine entscheidende Technologie, die die Leistung von Anwendungen erheblich verbessern kann. Die Golang-Sprache bietet eine breite Palette von Bibliotheken zur Verwendung des Cachings, einschließlich des integrierten Typs sync.Map
und Bibliotheken von Drittanbietern wie github.com/patrickmn/go-cache Code>. <code>sync.Map
类型和第三方库,如 github.com/patrickmn/go-cache
。
使用 sync.Map
sync.Map
是 Golang 标准库中提供的一个并发安全映射。它可以用来存储键值对,并且可以同时从多个 goroutine 中访问。要使用 sync.Map
存储数据,请遵循以下步骤:
package main import ( "sync" ) var cache = sync.Map{} func main() { // 将 "key1" 映射到值 "value1" cache.Store("key1", "value1") // 检索映射到 "key1" 的值 value, ok := cache.Load("key1") if !ok { // 如果键不存在,则返回 nil fmt.Println("Key not found") return } fmt.Println(value) // 输出:"value1" }
使用 go-cache
go-cache
是一个功能更丰富的缓存库,它提供了一些高级功能,例如逐出、过期和超时。要使用 go-cache
存储数据,请遵循以下步骤:
package main import ( "github.com/patrickmn/go-cache" "time" ) var cache = cache.New(5*time.Minute, 10*time.Minute) func main() { // 将 "key1" 映射到值 "value1",并设置 5 分钟的超时 cache.Set("key1", "value1", 5*time.Minute) // 检索映射到 "key1" 的值 value, found := cache.Get("key1") if !found { // 如果键不存在,则返回 nil fmt.Println("Key not found") return } fmt.Println(value) // 输出:"value1" }
实战案例
以下是一个使用 go-cache
Verwenden Sie sync.Map
🎜🎜sync.Map
ist eine parallelitätssichere Karte, die in der Golang-Standardbibliothek bereitgestellt wird. Es kann zum Speichern von Schlüssel-Wert-Paaren verwendet werden und kann von mehreren Goroutinen gleichzeitig aufgerufen werden. Um sync.Map
zum Speichern von Daten zu verwenden, befolgen Sie diese Schritte: 🎜package main import ( "database/sql" "fmt" "github.com/patrickmn/go-cache" "time" ) var ( db *sql.DB cache = cache.New(5*time.Minute, 10*time.Minute) ) func main() { // 打开数据库连接 db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/database") if err != nil { panic(err) } // 检索用户数据并缓存 rows, err := db.Query("SELECT * FROM users") if err != nil { panic(err) } for rows.Next() { var id int var name string if err := rows.Scan(&id, &name); err != nil { panic(err) } cache.Set(fmt.Sprintf("user:%d", id), name, cache.NoExpiration) } // 从缓存中检索用户姓名 name, found := cache.Get("user:1") if found { fmt.Println(name) // 输出:John Doe } else { fmt.Println("Key not found") } }
go-cache
ist eine Caching-Bibliothek mit mehr Funktionen. Es bietet erweiterte Funktionen wie Räumung, Ablauf und Zeitüberschreitung. Um go-cache
zum Speichern von Daten zu verwenden, befolgen Sie diese Schritte: 🎜rrreee🎜🎜Praktisches Beispiel🎜🎜🎜Hier ist ein Beispiel für die Verwendung von go-cache
zum Zwischenspeichern einer Datenbank eine Webanwendung Beispiel für Abfrageergebnisse: 🎜rrreee🎜Durch die Nutzung der Caching-Funktionen von Golang können Sie die Leistung Ihrer Anwendung erheblich verbessern und Abfragen an die zugrunde liegende Datenbank reduzieren. 🎜Das obige ist der detaillierte Inhalt vonWie schreibe ich Daten mit Golang in den Cache?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!