* feat: move to ristretto based memory cache with metrics enabled * chore: fix go-deps * fix: metrics namesapces * feat: telemetrystore instrumentation hook * fix: try exporting metrics without units * fix: exporting metrics without units to avoid ratio conversion * feat: figure out operation name like bun spans * chore: minor improvements * feat: add totalCost metric for memorycache * feat: new config for memorycache and fix tests * chore: rename newTelemetry func to newMetrics * chore: add memory.cloneable and memory.cost span attributes * fix: add wait func call --------- Co-authored-by: Pandey <vibhupandey28@gmail.com> Co-authored-by: Nityananda Gohain <nityanandagohain@gmail.com> Co-authored-by: Srikanth Chekuri <srikanth.chekuri92@gmail.com>
49 lines
1000 B
Go
49 lines
1000 B
Go
package cache
|
|
|
|
import (
|
|
"github.com/SigNoz/signoz/pkg/factory"
|
|
)
|
|
|
|
type Memory struct {
|
|
NumCounters int64 `mapstructure:"num_counters"`
|
|
MaxCost int64 `mapstructure:"max_cost"`
|
|
}
|
|
|
|
type Redis struct {
|
|
Host string `mapstructure:"host"`
|
|
Port int `mapstructure:"port"`
|
|
Password string `mapstructure:"password"`
|
|
DB int `mapstructure:"db"`
|
|
}
|
|
|
|
type Config struct {
|
|
Provider string `mapstructure:"provider"`
|
|
Memory Memory `mapstructure:"memory"`
|
|
Redis Redis `mapstructure:"redis"`
|
|
}
|
|
|
|
func NewConfigFactory() factory.ConfigFactory {
|
|
return factory.NewConfigFactory(factory.MustNewName("cache"), newConfig)
|
|
}
|
|
|
|
func newConfig() factory.Config {
|
|
return &Config{
|
|
Provider: "memory",
|
|
Memory: Memory{
|
|
NumCounters: 10 * 10000, // 10k cache entries * 10x as per ristretto
|
|
MaxCost: 1 << 27, // 128 MB
|
|
},
|
|
Redis: Redis{
|
|
Host: "localhost",
|
|
Port: 6379,
|
|
Password: "",
|
|
DB: 0,
|
|
},
|
|
}
|
|
|
|
}
|
|
|
|
func (c Config) Validate() error {
|
|
return nil
|
|
}
|