Maison >développement back-end >Golang >Comment écrire des données dans le cache à l'aide de Golang ?

Comment écrire des données dans le cache à l'aide de Golang ?

WBOY
WBOYoriginal
2024-06-01 13:21:571161parcourir

Résumé : Il existe de nombreuses façons d'effectuer des opérations de cache à l'aide du langage Go, notamment : sync.Map : mappage intégré sécurisé contre la concurrence, adapté aux caches à petite échelle. go-cache : une bibliothèque tierce qui fournit des fonctionnalités plus avancées telles que l'expulsion, l'expiration et les délais d'attente. Dans les applications pratiques, go-cache peut être utilisé pour mettre en cache les résultats des requêtes de base de données, améliorant ainsi les performances des applications et réduisant les opérations de requête de base de données.

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

Écrivez des données dans le cache à l'aide de Golang

Dans les systèmes distribués, la mise en cache est une technologie cruciale qui peut améliorer considérablement les performances des applications. Le langage Golang fournit un large éventail de bibliothèques pour utiliser la mise en cache, y compris le type intégré sync.Map et des bibliothèques tierces telles que 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

Utilisez sync.Map

🎜🎜sync.Map est une carte sécurisée pour la concurrence fournie dans la bibliothèque standard Golang. Il peut être utilisé pour stocker des paires clé-valeur et est accessible à partir de plusieurs goroutines en même temps. Pour utiliser sync.Map pour stocker des données, suivez ces étapes : 🎜
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")
    }
}
🎜🎜Utilisez go-cache🎜🎜🎜go-cache est une bibliothèque de mise en cache plus riche en fonctionnalités, Il fournit des fonctionnalités avancées telles que l'expulsion, l'expiration et le délai d'attente. Pour utiliser go-cache pour stocker des données, suivez ces étapes : 🎜rrreee🎜🎜Exemple pratique🎜🎜🎜Voici un exemple d'utilisation de go-cache pour mettre en cache une base de données dans une application Web Exemple de résultats de requête : 🎜rrreee🎜En tirant parti des capacités de mise en cache de Golang, vous pouvez améliorer considérablement les performances de votre application et réduire les requêtes sur la base de données sous-jacente. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn