github.com/Tyktechnologies/tyk@v2.9.5+incompatible/gateway/redis_analytics_purger.go (about) 1 package gateway 2 3 import ( 4 "time" 5 6 "github.com/TykTechnologies/tyk/config" 7 "github.com/TykTechnologies/tyk/storage" 8 ) 9 10 // Purger is an interface that will define how the in-memory store will be purged 11 // of analytics data to prevent it growing too large 12 type Purger interface { 13 PurgeCache() 14 PurgeLoop(<-chan time.Time) 15 } 16 17 type RedisPurger struct { 18 Store storage.Handler 19 } 20 21 func (r RedisPurger) PurgeLoop(ticker <-chan time.Time) { 22 for { 23 <-ticker 24 r.PurgeCache() 25 } 26 } 27 28 func (r *RedisPurger) PurgeCache() { 29 expireAfter := config.Global().AnalyticsConfig.StorageExpirationTime 30 if expireAfter == 0 { 31 expireAfter = 60 // 1 minute 32 } 33 34 exp, _ := r.Store.GetExp(analyticsKeyName) 35 if exp <= 0 { 36 r.Store.SetExp(analyticsKeyName, int64(expireAfter)) 37 } 38 }