In memory store. Should have been here from the beginning.
This commit is contained in:
parent
87e2edbeb5
commit
5372f3a009
@ -33,6 +33,8 @@ func Init() {
|
|||||||
switch flagStore {
|
switch flagStore {
|
||||||
case "memcached":
|
case "memcached":
|
||||||
store.DefaultStore = store.NewMemcacheStore()
|
store.DefaultStore = store.NewMemcacheStore()
|
||||||
|
case "memory":
|
||||||
|
store.DefaultStore = store.NewMemoryStore()
|
||||||
case "etcd":
|
case "etcd":
|
||||||
store.DefaultStore = store.NewEtcdStore()
|
store.DefaultStore = store.NewEtcdStore()
|
||||||
}
|
}
|
||||||
|
14
store/memory_item.go
Normal file
14
store/memory_item.go
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
package store
|
||||||
|
|
||||||
|
type MemoryItem struct {
|
||||||
|
key string
|
||||||
|
value []byte
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MemoryItem) Key() string {
|
||||||
|
return m.key
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MemoryItem) Value() []byte {
|
||||||
|
return m.value
|
||||||
|
}
|
48
store/memory_store.go
Normal file
48
store/memory_store.go
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
package store
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
type MemoryStore struct {
|
||||||
|
sync.RWMutex
|
||||||
|
store map[string]Item
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MemoryStore) Get(key string) (Item, error) {
|
||||||
|
m.RLock()
|
||||||
|
v, ok := m.store[key]
|
||||||
|
m.RUnlock()
|
||||||
|
if !ok {
|
||||||
|
return nil, errors.New("key not found")
|
||||||
|
}
|
||||||
|
return v, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MemoryStore) Del(key string) error {
|
||||||
|
m.Lock()
|
||||||
|
delete(m.store, key)
|
||||||
|
m.Unlock()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MemoryStore) Put(item Item) error {
|
||||||
|
m.Lock()
|
||||||
|
m.store[item.Key()] = item
|
||||||
|
m.Unlock()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *MemoryStore) NewItem(key string, value []byte) Item {
|
||||||
|
return &MemoryItem{
|
||||||
|
key: key,
|
||||||
|
value: value,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewMemoryStore() Store {
|
||||||
|
return &MemoryStore{
|
||||||
|
store: make(map[string]Item),
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user