58 lines
912 B
Go
58 lines
912 B
Go
|
package session
|
||
|
|
||
|
import (
|
||
|
"errors"
|
||
|
"sync"
|
||
|
)
|
||
|
|
||
|
//对象
|
||
|
|
||
|
type MemorySession struct {
|
||
|
sessionId string
|
||
|
//存kv
|
||
|
data map[string]interface{}
|
||
|
rwLock sync.RWMutex
|
||
|
}
|
||
|
|
||
|
//构造函数
|
||
|
|
||
|
func NewMemorySession(id string) *MemorySession {
|
||
|
s := &MemorySession{
|
||
|
sessionId: id,
|
||
|
data: make(map[string]interface{}, 16),
|
||
|
}
|
||
|
return s
|
||
|
}
|
||
|
|
||
|
//增删改查
|
||
|
|
||
|
func (m *MemorySession) Set(key string, value interface{}) (err error) {
|
||
|
//枷锁
|
||
|
m.rwLock.Lock()
|
||
|
defer m.rwLock.Unlock()
|
||
|
m.data[key] = value
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (m *MemorySession) Get(key string) (value interface{}, err error) {
|
||
|
m.rwLock.Lock()
|
||
|
defer m.rwLock.Unlock()
|
||
|
value, ok := m.data[key]
|
||
|
if !ok {
|
||
|
err = errors.New("key not exist in session")
|
||
|
return
|
||
|
}
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (m *MemorySession) Del(key string) (err error) {
|
||
|
m.rwLock.Lock()
|
||
|
defer m.rwLock.Unlock()
|
||
|
delete(m.data, key)
|
||
|
return
|
||
|
}
|
||
|
|
||
|
func (m *MemorySession) Save() (err error) {
|
||
|
return
|
||
|
}
|