MCPcopy Create free account
hub / github.com/cortexproject/cortex / New

Function New

pkg/chunk/cache/cache.go:64–111  ·  view source on GitHub ↗

New creates a new Cache using Config.

(cfg Config, reg prometheus.Registerer, logger log.Logger)

Source from the content-addressed store, hash-verified

62
63// New creates a new Cache using Config.
64func New(cfg Config, reg prometheus.Registerer, logger log.Logger) (Cache, error) {
65 if cfg.Cache != nil {
66 return cfg.Cache, nil
67 }
68
69 caches := []Cache{}
70
71 if cfg.EnableFifoCache {
72 if cfg.Fifocache.Validity == 0 && cfg.DefaultValidity != 0 {
73 cfg.Fifocache.Validity = cfg.DefaultValidity
74 }
75
76 if cache := NewFifoCache(cfg.Prefix+"fifocache", cfg.Fifocache, reg, logger); cache != nil {
77 caches = append(caches, Instrument(cfg.Prefix+"fifocache", cache, reg))
78 }
79 }
80
81 if (cfg.MemcacheClient.Host != "" || cfg.MemcacheClient.Addresses != "") && cfg.Redis.Endpoint != "" {
82 return nil, errors.New("use of multiple cache storage systems is not supported")
83 }
84
85 if cfg.MemcacheClient.Host != "" || cfg.MemcacheClient.Addresses != "" {
86 if cfg.Memcache.Expiration == 0 && cfg.DefaultValidity != 0 {
87 cfg.Memcache.Expiration = cfg.DefaultValidity
88 }
89
90 client := NewMemcachedClient(cfg.MemcacheClient, cfg.Prefix, reg, logger)
91 cache := NewMemcached(cfg.Memcache, client, cfg.Prefix, reg, logger)
92
93 cacheName := cfg.Prefix + "memcache"
94 caches = append(caches, NewBackground(cacheName, cfg.Background, Instrument(cacheName, cache, reg), reg))
95 }
96
97 if cfg.Redis.Endpoint != "" {
98 if cfg.Redis.Expiration == 0 && cfg.DefaultValidity != 0 {
99 cfg.Redis.Expiration = cfg.DefaultValidity
100 }
101 cacheName := cfg.Prefix + "redis"
102 cache := NewRedisCache(cacheName, NewRedisClient(&cfg.Redis), reg, logger)
103 caches = append(caches, NewBackground(cacheName, cfg.Background, Instrument(cacheName, cache, reg), reg))
104 }
105
106 cache := NewTiered(caches)
107 if len(caches) > 1 {
108 cache = Instrument(cfg.Prefix+"tiered", cache, reg)
109 }
110 return cache, nil
111}

Callers 1

Calls 8

NewFifoCacheFunction · 0.85
NewMemcachedClientFunction · 0.85
NewBackgroundFunction · 0.85
NewRedisCacheFunction · 0.85
NewRedisClientFunction · 0.85
NewTieredFunction · 0.85
InstrumentFunction · 0.70
NewMemcachedFunction · 0.70

Tested by

no test coverage detected