我正在尝试从MySQL数据库中获取数据,并每隔6小时将其存储在redis上。我在红系是全新的。我希望使用来自MySQL 的Select*从table_name DB获取数据。然后将这些数据存储到redis中。在Golang框架中有存储数据和从redis获取数据的例子吗?
发布于 2021-11-29 06:00:19
例子:去红葡萄酒:
var ctx = context.Background()
func ExampleClient() {
//01 connect
rdb := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "", // no password set
DB: 0, // use default DB
})
err := rdb.Set(ctx, "key", "value", 0).Err()
if err != nil {
panic(err)
}
val, err := rdb.Get(ctx, "key").Result()
if err != nil {
panic(err)
}
fmt.Println("key", val)
}键入User struct { UserID uint32 UserName string } var ctx = context.Background()
// Set set to redis as string
func Set() {
var u User
marshal, err := json.Marshal(&u)
if err != nil {
log.Println(err)
}
rdb.Set(ctx,"user",string(marshal),-1)
//-1 means no expiration time
}
// Get get from redis
func Get() {
var u User
bytes, err := rdb.Get(ctx, "user").Bytes()
if err != nil {
log.Println(err)
}
err = json.Unmarshal(bytes, &u)
if err != nil {
log.Println(err)
}
}发布于 2022-01-11 10:18:48
您应该同时使用雷迪斯和克伦工作。因为,您希望每6小时以redis格式存储数据。
我为您的场景创建了一个示例示例,如下所示:
func SetData(c *RedisClient, key string, value interface{}){
//-1 means no expiration time
err := c.Set(ctx,key,value,-1).Err()
if err != nil{
panic(err)
}
}
func GetData() {
//fetch your table data from database
//take instance of redis client
//call SetData()
//var user_val model.User{}
//assuming you have fetched data in user_val
SetData(redis_client_instance, "user", user_val)
}现在,打电话给GetData()内部的cron-作业,从中午12点开始,并在红区的每6次添加数据。
//pick the start time inside NewScheduler
//if you want you can load your zone time.
s := gocron.NewScheduler(time.UTC)
s.Every(6).Hours().Do(GetData)发布于 2022-01-12 11:33:07
我不确定你是在用Beego来要求密码。或者你只是需要指导你的问题。做这件事有几种方法,它们都有自己的缺点。
https://stackoverflow.com/questions/70056690
复制相似问题