Maison >développement back-end >Golang >Comment écrire des données dans le cache à l'aide de Golang ?
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.
É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!