Wie schreibe ich Daten mit Golang in den Cache?

WBOY
Freigeben: 2024-06-01 13:21:57
Original
1118 Leute haben es durchsucht

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.

如何使用 Golang 将数据写入缓存?

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"
}
Nach dem Login kopieren

使用 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"
}
Nach dem Login kopieren

实战案例

以下是一个使用 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")
    }
}
Nach dem Login kopieren
🎜🎜Verwenden Sie go-cache🎜🎜🎜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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage