mirror of
https://github.com/gofiber/storage.git
synced 2025-10-05 08:37:10 +08:00
47 lines
835 B
Go
47 lines
835 B
Go
package ristretto
|
|
|
|
// Config defines the config for storage.
|
|
type Config struct {
|
|
// NumCounters number of keys to track frequency of (10M).
|
|
NumCounters int64
|
|
|
|
// MaxCost maximum cost of cache (1GB).
|
|
MaxCost int64
|
|
|
|
// BufferItems number of keys per Get buffer.
|
|
BufferItems int64
|
|
DefaultCost int64
|
|
}
|
|
|
|
var ConfigDefault = Config{
|
|
NumCounters: 1e7,
|
|
MaxCost: 1 << 30,
|
|
BufferItems: 64,
|
|
DefaultCost: 1,
|
|
}
|
|
|
|
func configDefault(config ...Config) Config {
|
|
if len(config) < 1 {
|
|
return ConfigDefault
|
|
}
|
|
cfg := config[0]
|
|
|
|
if cfg.NumCounters < 1 {
|
|
cfg.NumCounters = ConfigDefault.NumCounters
|
|
}
|
|
|
|
if cfg.MaxCost < 1 {
|
|
cfg.MaxCost = ConfigDefault.MaxCost
|
|
}
|
|
|
|
if cfg.BufferItems < 1 {
|
|
cfg.BufferItems = ConfigDefault.BufferItems
|
|
}
|
|
|
|
if cfg.DefaultCost == 0 {
|
|
cfg.DefaultCost = ConfigDefault.DefaultCost
|
|
}
|
|
|
|
return cfg
|
|
}
|