mirror of
https://github.com/go-micro/go-micro.git
synced 2024-11-24 08:02:32 +02:00
05a299b76c
* Add simple in-memory cache * Support configuring cache expiration duration * Support preinitializing cache with items * Register cache
41 lines
783 B
Go
41 lines
783 B
Go
package cache
|
|
|
|
import "time"
|
|
|
|
// Options represents the options for the cache.
|
|
type Options struct {
|
|
Expiration time.Duration
|
|
Items map[string]Item
|
|
}
|
|
|
|
// Option manipulates the Options passed.
|
|
type Option func(o *Options)
|
|
|
|
// Expiration sets the duration for items stored in the cache to expire.
|
|
func Expiration(d time.Duration) Option {
|
|
return func(o *Options) {
|
|
o.Expiration = d
|
|
}
|
|
}
|
|
|
|
// Items initializes the cache with preconfigured items.
|
|
func Items(i map[string]Item) Option {
|
|
return func(o *Options) {
|
|
o.Items = i
|
|
}
|
|
}
|
|
|
|
// NewOptions returns a new options struct.
|
|
func NewOptions(opts ...Option) Options {
|
|
options := Options{
|
|
Expiration: DefaultExpiration,
|
|
Items: make(map[string]Item),
|
|
}
|
|
|
|
for _, o := range opts {
|
|
o(&options)
|
|
}
|
|
|
|
return options
|
|
}
|