cache interface (#1805)
This commit is contained in:
parent
86f4235aaf
commit
00bd2bc65f
17
cache/cache.go
vendored
Normal file
17
cache/cache.go
vendored
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
// Package cache is a caching interface
|
||||||
|
package cache
|
||||||
|
|
||||||
|
type Cache interface {
|
||||||
|
// Initialise options
|
||||||
|
Init(...Option) error
|
||||||
|
// Get a value
|
||||||
|
Get(key string) (interface{}, error)
|
||||||
|
// Set a value
|
||||||
|
Set(key string, val interface{}) error
|
||||||
|
// Delete a value
|
||||||
|
Delete(key string) error
|
||||||
|
// Name of the implementation
|
||||||
|
String() string
|
||||||
|
}
|
||||||
|
|
||||||
|
type Option struct{}
|
56
cache/memory/memory.go
vendored
Normal file
56
cache/memory/memory.go
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
// Package memory is an in memory cache
|
||||||
|
package memory
|
||||||
|
|
||||||
|
import (
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"github.com/micro/go-micro/v2/cache"
|
||||||
|
"github.com/micro/go-micro/v2/errors"
|
||||||
|
)
|
||||||
|
|
||||||
|
type memoryCache struct {
|
||||||
|
// TODO: use a decent caching library
|
||||||
|
sync.RWMutex
|
||||||
|
values map[string]interface{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *memoryCache) Init(opts ...cache.Option) error {
|
||||||
|
// TODO: implement
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *memoryCache) Get(key string) (interface{}, error) {
|
||||||
|
m.RLock()
|
||||||
|
defer m.RUnlock()
|
||||||
|
|
||||||
|
v, ok := m.values[key]
|
||||||
|
if !ok {
|
||||||
|
return nil, errors.NotFound("go.micro.cache", key+" not found")
|
||||||
|
}
|
||||||
|
|
||||||
|
return v, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *memoryCache) Set(key string, val interface{}) error {
|
||||||
|
m.Lock()
|
||||||
|
m.values[key] = val
|
||||||
|
m.Unlock()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *memoryCache) Delete(key string) error {
|
||||||
|
m.Lock()
|
||||||
|
delete(m.values, key)
|
||||||
|
m.Unlock()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *memoryCache) String() string {
|
||||||
|
return "memory"
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewCache(opts ...cache.Option) cache.Cache {
|
||||||
|
return &memoryCache{
|
||||||
|
values: make(map[string]interface{}),
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user