go lang redis

EMBED

Tue Jul 04 2023 09:09:45 GMT+0000 (Coordinated Universal Time)

Saved by @tienplaygirl #go


import ( "fmt" "github.com/go-redis/redis" "gorm.io/driver/mysql" "gorm.io/gorm" ) func main() { // Create a Redis client redisClient := redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "", // no password set DB: 0, // use default DB }) // Create a GORM DB connection gormDB, err := gorm.Open(mysql.Open("username:password@tcp(host:port)/database"), &gorm.Config{}) if err != nil { fmt.Println("Failed to connect to the database:", err) return } // Start Redis transaction redisTx := redisClient.TxPipeline() // Cache data in Redis redisTx.Set("key1", "value1", 0) redisTx.Set("key2", "value2", 0) // Start GORM transaction gormTx := gormDB.Begin() // Update data in the database using GORM if err := gormTx.Table("your_table").Where("condition").Updates(map[string]interface{}{ "column1": "value1", "column2": "value2", }).Error; err != nil { // Rollback Redis transaction redisTx.Discard() // Rollback GORM transaction gormTx.Rollback() fmt.Println("Failed to update data in the database:", err) return } // Execute Redis transaction _, redisErr := redisTx.Exec() // Check for Redis transaction error if redisErr != nil { // Rollback GORM transaction gormTx.Rollback() fmt.Println("Failed to update data in Redis:", redisErr) return } // Commit GORM transaction if err := gormTx.Commit().Error; err != nil { fmt.Println("Failed to commit GORM transaction:", err) return } fmt.Println("Data cached and updated successfully") }

https://www.thiscodeworks.com/extension/initializing?newuser