From 11d547e5f0025f51ef74e1b8a50c0efac27d997a Mon Sep 17 00:00:00 2001 From: Smirnov Oleksandr Date: Thu, 24 Oct 2024 18:42:29 +0300 Subject: [PATCH] refactor(usercache): set custom ttl for cache --- .env.example | 1 + cmd/server/main.go | 2 +- internal/config/config.go | 4 ++++ internal/store/rdb/usercache/usercache.go | 12 ++++++++---- 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.env.example b/.env.example index ec29b0bd..1dd46db3 100644 --- a/.env.example +++ b/.env.example @@ -21,6 +21,7 @@ POSTGRESQL_DSN="postgres://$POSTGRES_USERNAME:$POSTGRES_PASSWORD@$POSTGRES_HOST: MIGRATION_DSN="postgres://$POSTGRES_USERNAME:$POSTGRES_PASSWORD@localhost:$POSTGRES_PORT/$POSTGRES_DATABASE?sslmode=disable" REDIS_ADDR="redis:6379" +CACHE_USERS_TTL=1h MAILGUN_FROM=onasty@mail.com MAILGUN_DOMAI='' diff --git a/cmd/server/main.go b/cmd/server/main.go index fe2f271c..24d59701 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -76,7 +76,7 @@ func run(ctx context.Context) error { vertokrepo := vertokrepo.New(psqlDB) userepo := userepo.New(psqlDB) - usercache := usercache.New(rdb) + usercache := usercache.New(rdb, cfg.CacheUsersTTL) usersrv := usersrv.New( userepo, sessionrepo, diff --git a/internal/config/config.go b/internal/config/config.go index 711d088e..ff1c6b13 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -37,6 +37,8 @@ type Config struct { RateLimiterRPS int RateLimiterBurst int RateLimiterTTL time.Duration + + CacheUsersTTL time.Duration } func NewConfig() *Config { @@ -75,6 +77,8 @@ func NewConfig() *Config { RateLimiterRPS: mustGetenvOrDefaultInt("RATELIMITER_RPS", 100), RateLimiterBurst: mustGetenvOrDefaultInt("RATELIMITER_BURST", 10), RateLimiterTTL: mustParseDuration(getenvOrDefault("RATELIMITER_TTL", "1m")), + + CacheUsersTTL: mustParseDuration(getenvOrDefault("CACHE_USERS_TTL", "1h")), } } diff --git a/internal/store/rdb/usercache/usercache.go b/internal/store/rdb/usercache/usercache.go index f09e031f..0c3ade6d 100644 --- a/internal/store/rdb/usercache/usercache.go +++ b/internal/store/rdb/usercache/usercache.go @@ -21,15 +21,19 @@ var _ UserCacheer = (*UserCache)(nil) type UserCache struct { rdb *redis.Client + ttl time.Duration } -func New(rdb *redis.Client) *UserCache { - return &UserCache{rdb} +func New(rdb *redis.Client, ttl time.Duration) *UserCache { + return &UserCache{ + rdb: rdb, + ttl: ttl, + } } func (u *UserCache) SetUserIsExists(ctx context.Context, userID string, val bool) error { _, err := u.rdb. - Set(ctx, getKey("exists", userID), val, time.Hour). + Set(ctx, getKey("exists", userID), val, u.ttl). Result() return err } @@ -46,7 +50,7 @@ func (u *UserCache) GetUserIsExists(ctx context.Context, userID string) (bool, e func (u *UserCache) SetUserIsActivated(ctx context.Context, userID string, val bool) error { _, err := u.rdb. - Set(ctx, getKey("activated", userID), val, time.Hour). + Set(ctx, getKey("activated", userID), val, u.ttl). Result() return err }