Maison > Article > développement back-end > Comment définir la politique d'expiration du cache dans l'application Golang ?
Il existe trois façons de définir la politique d'expiration du cache dans les applications Golang : utilisez time.Duration : définissez un délai d'expiration fixe. Utiliser l'horodatage d'expiration : spécifiez explicitement l'heure d'expiration. Utilisez une politique d'expiration personnalisée : définissez de manière flexible le délai d'expiration via redis.HookFunc.
L'utilisation de la mise en cache dans les applications Golang peut améliorer considérablement les performances. Cependant, les éléments du cache ont une durée d'existence limitée et doivent être invalidés une fois cette limite dépassée. Voici comment définir la politique d'expiration du cache dans Golang :
Le moyen le plus simple est d'utiliser le type time.Duration
, qui représente un intervalle de temps. Par exemple : 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) })) }Utilisez un horodatage d'expiration🎜🎜Une autre approche consiste à utiliser un horodatage d'expiration, qui est un horodatage Unix qui indique quand l'élément de cache expire. Par exemple : 🎜rrreee🎜Politique d'expiration personnalisée🎜🎜Si vous avez besoin d'une politique d'expiration plus complexe, vous pouvez utiliser
redis.HookFunc
. Par exemple, vous pouvez définir un délai d'expiration personnalisé en fonction de l'utilisation des éléments du cache : 🎜rrreeeCe 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!