Terdapat tiga cara untuk menetapkan dasar tamat tempoh cache dalam aplikasi Golang: masa penggunaan. Tempoh: tetapkan masa tamat tempoh tetap. Gunakan cap masa tamat tempoh: Nyatakan masa tamat tempoh secara eksplisit. Gunakan dasar tamat tempoh tersuai: tetapkan masa tamat tempoh secara fleksibel melalui redis.HookFunc.
Menggunakan caching dalam aplikasi Golang boleh meningkatkan prestasi dengan ketara. Walau bagaimanapun, terdapat had masa untuk kewujudan item cache, dan item tersebut perlu dibatalkan selepas had ini melebihi. Begini cara untuk menetapkan dasar tamat tempoh cache di Golang:
Cara paling mudah ialah menggunakan jenis time.Duration
类型,它表示时间跨度。例如:
import ( "context" "time" "github.com/go-redis/redis/v8" ) func main() { ctx := context.Background() client := redis.NewClient(&redis.Options{ Addr: "localhost:6379", }) // 设置缓存值,过期时间为 10 分钟 err := client.SetEX(ctx, "my-key", "my-value", 10*time.Minute).Err() if err != nil { panic(err) } }
另一种方法是使用到期时间戳,这是一种 Unix 时间戳,表示缓存项失效的时间。例如:
import ( "context" "time" "github.com/go-redis/redis/v8" ) func main() { ctx := context.Background() client := redis.NewClient(&redis.Options{ Addr: "localhost:6379", }) // 设置缓存值,到期时间戳为 10 分钟后的时间 expiration := time.Now().Add(10 * time.Minute).Unix() err := client.Set(ctx, "my-key", "my-value", time.Duration(expiration-time.Now().Unix())*time.Second).Err() if err != nil { panic(err) } }
如果你需要更复杂的过期策略,可以使用 redis.HookFunc
import ( "context" "time" "github.com/go-redis/redis/v8" ) func main() { ctx := context.Background() client := redis.NewClient(&redis.Options{ Addr: "localhost:6379", }) // 设置自定义过期策略 client.AddHook(redis.AfterSetHookFunc(func(ctx context.Context, key string, value interface{}) { // 根据缓存项的使用情况计算到期时间 expiration := calculateExpiration(key, value) // 设置到期时间戳 client.Expire(ctx, key, time.Duration(expiration-time.Now().Unix())*time.Second) })) }
redis.HookFunc
. Sebagai contoh, anda boleh menetapkan masa tamat tempoh tersuai berdasarkan penggunaan item cache: 🎜rrreeeAtas ialah kandungan terperinci Bagaimana untuk menetapkan dasar tamat tempoh cache dalam aplikasi Golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!