Files
storage/memcache/memcache.go
2020-11-02 13:45:21 +01:00

63 lines
1.0 KiB
Go

package memcache
import (
"time"
mc "github.com/bradfitz/gomemcache/memcache"
)
// Storage interface that is implemented by storage providers
type Storage struct {
db *mc.Client
gcInterval time.Duration
}
// New creates a new storage
func New(config ...Config) *Storage {
// Set default config
cfg := configDefault(config...)
db := mc.New(cfg.ServerList...)
db.Timeout = cfg.Timeout
db.MaxIdleConns = cfg.MaxIdleConns
// Create storage
store := &Storage{
gcInterval: cfg.GCInterval,
}
// Start garbage collector
go store.gc()
return store
}
// Get value by key
func (s *Storage) Get(key string) ([]byte, error) {
return nil, nil
}
// Set key with value
func (s *Storage) Set(key string, val []byte, exp time.Duration) error {
return nil
}
// Delete key by key
func (s *Storage) Delete(key string) error {
return nil
}
// Clear all keys
func (s *Storage) Clear() error {
return nil
}
// Garbage collector to delete expired keys
func (s *Storage) gc() {
tick := time.NewTicker(s.gcInterval)
for {
<-tick.C
// clean entries
}
}