Commit 8d30594e authored by felipe's avatar felipe Committed by GitHub

feat(proxyd): change default cache ttl to 2 hours and make it configurable (#9645)

parent a58ea471
...@@ -21,8 +21,6 @@ type Cache interface { ...@@ -21,8 +21,6 @@ type Cache interface {
const ( const (
// assuming an average RPCRes size of 3 KB // assuming an average RPCRes size of 3 KB
memoryCacheLimit = 4096 memoryCacheLimit = 4096
// Set a large ttl to avoid expirations. However, a ttl must be set for volatile-lru to take effect.
redisTTL = 30 * 7 * 24 * time.Hour
) )
type cache struct { type cache struct {
...@@ -49,10 +47,11 @@ func (c *cache) Put(ctx context.Context, key string, value string) error { ...@@ -49,10 +47,11 @@ func (c *cache) Put(ctx context.Context, key string, value string) error {
type redisCache struct { type redisCache struct {
rdb *redis.Client rdb *redis.Client
prefix string prefix string
ttl time.Duration
} }
func newRedisCache(rdb *redis.Client, prefix string) *redisCache { func newRedisCache(rdb *redis.Client, prefix string, ttl time.Duration) *redisCache {
return &redisCache{rdb, prefix} return &redisCache{rdb, prefix, ttl}
} }
func (c *redisCache) namespaced(key string) string { func (c *redisCache) namespaced(key string) string {
...@@ -78,7 +77,7 @@ func (c *redisCache) Get(ctx context.Context, key string) (string, error) { ...@@ -78,7 +77,7 @@ func (c *redisCache) Get(ctx context.Context, key string) (string, error) {
func (c *redisCache) Put(ctx context.Context, key string, value string) error { func (c *redisCache) Put(ctx context.Context, key string, value string) error {
start := time.Now() start := time.Now()
err := c.rdb.SetEx(ctx, c.namespaced(key), value, redisTTL).Err() err := c.rdb.SetEx(ctx, c.namespaced(key), value, c.ttl).Err()
redisCacheDurationSumm.WithLabelValues("SETEX").Observe(float64(time.Since(start).Milliseconds())) redisCacheDurationSumm.WithLabelValues("SETEX").Observe(float64(time.Since(start).Milliseconds()))
if err != nil { if err != nil {
......
...@@ -29,7 +29,8 @@ type ServerConfig struct { ...@@ -29,7 +29,8 @@ type ServerConfig struct {
} }
type CacheConfig struct { type CacheConfig struct {
Enabled bool `toml:"enabled"` Enabled bool `toml:"enabled"`
TTL TOMLDuration `toml:"ttl"`
} }
type RedisConfig struct { type RedisConfig struct {
......
...@@ -235,7 +235,11 @@ func Start(config *Config) (*Server, func(), error) { ...@@ -235,7 +235,11 @@ func Start(config *Config) (*Server, func(), error) {
log.Warn("redis is not configured, using in-memory cache") log.Warn("redis is not configured, using in-memory cache")
cache = newMemoryCache() cache = newMemoryCache()
} else { } else {
cache = newRedisCache(redisClient, config.Redis.Namespace) ttl := defaultCacheTtl
if config.Cache.TTL != 0 {
ttl = time.Duration(config.Cache.TTL)
}
cache = newRedisCache(redisClient, config.Redis.Namespace, ttl)
} }
rpcCache = newRPCCache(newCacheWithCompression(cache)) rpcCache = newRPCCache(newCacheWithCompression(cache))
} }
......
...@@ -42,6 +42,7 @@ const ( ...@@ -42,6 +42,7 @@ const (
defaultWSHandshakeTimeout = 10 * time.Second defaultWSHandshakeTimeout = 10 * time.Second
defaultWSReadTimeout = 2 * time.Minute defaultWSReadTimeout = 2 * time.Minute
defaultWSWriteTimeout = 10 * time.Second defaultWSWriteTimeout = 10 * time.Second
defaultCacheTtl = 1 * time.Hour
maxRequestBodyLogLen = 2000 maxRequestBodyLogLen = 2000
defaultMaxUpstreamBatchSize = 10 defaultMaxUpstreamBatchSize = 10
defaultRateLimitHeader = "X-Forwarded-For" defaultRateLimitHeader = "X-Forwarded-For"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment