Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk menulis data ke cache menggunakan Golang?
Abstrak: Terdapat banyak cara untuk melaksanakan operasi cache menggunakan bahasa Go, termasuk: penyegerakan.Peta: Pemetaan selamat serentak terbina dalam, sesuai untuk cache berskala kecil. go-cache: Pustaka pihak ketiga yang menyediakan ciri yang lebih maju seperti pengusiran, tamat tempoh dan tamat masa. Dalam aplikasi praktikal, go-cache boleh digunakan untuk cache hasil pertanyaan pangkalan data, dengan itu meningkatkan prestasi aplikasi dan mengurangkan operasi pertanyaan pangkalan data.
Tulis data ke cache menggunakan Golang
Dalam sistem teragih, caching ialah teknologi penting yang boleh meningkatkan prestasi aplikasi dengan ketara. Bahasa Golang menyediakan pelbagai pustaka untuk digunakan caching, termasuk jenis sync.Map
terbina dalam dan pustaka pihak ketiga seperti github.com/patrickmn/go-cache kod>. <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
Gunakan sync.Map
🎜🎜sync.Map
ialah peta selamat serentak yang disediakan dalam pustaka standard Golang. Ia boleh digunakan untuk menyimpan pasangan nilai kunci dan boleh diakses daripada berbilang goroutine pada masa yang sama. Untuk menggunakan sync.Map
untuk menyimpan data, ikuti langkah berikut: 🎜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") } }🎜🎜Gunakan go-cache🎜🎜🎜
go-cache
ialah perpustakaan caching yang lebih kaya dengan ciri, Ia menyediakan ciri lanjutan seperti pengusiran, tamat tempoh dan tamat masa. Untuk menggunakan go-cache
untuk menyimpan data, ikuti langkah berikut: 🎜rrreee🎜🎜Contoh Praktikal🎜🎜🎜Berikut ialah contoh penggunaan go-cache
untuk cache pangkalan data dalam aplikasi web Contoh hasil pertanyaan: 🎜rrreee🎜Dengan memanfaatkan keupayaan caching Golang, anda boleh meningkatkan prestasi aplikasi anda dengan ketara dan mengurangkan pertanyaan kepada pangkalan data asas. 🎜Atas ialah kandungan terperinci Bagaimana untuk menulis data ke cache menggunakan Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!