mirror of
https://github.com/lejianwen/rustdesk-api.git
synced 2025-11-29 08:33:21 +00:00
72 lines
1.3 KiB
Go
72 lines
1.3 KiB
Go
package cache
|
||
|
||
import (
|
||
"encoding/json"
|
||
)
|
||
|
||
type Handler interface {
|
||
Get(key string, value interface{}) error
|
||
Set(key string, value interface{}, exp int) error
|
||
Gc() error
|
||
}
|
||
|
||
// MaxTimeOut 最大超时时间
|
||
|
||
const (
|
||
TypeMem = "memory"
|
||
TypeRedis = "redis"
|
||
TypeFile = "file"
|
||
MaxTimeOut = 365 * 24 * 3600
|
||
)
|
||
|
||
func New(typ string) Handler {
|
||
var cache Handler
|
||
switch typ {
|
||
case TypeFile:
|
||
cache = NewFileCache()
|
||
case TypeRedis:
|
||
cache = new(RedisCache)
|
||
case TypeMem: // memory
|
||
cache = NewMemoryCache(0)
|
||
default:
|
||
cache = NewMemoryCache(0)
|
||
}
|
||
return cache
|
||
}
|
||
|
||
func EncodeValue(value interface{}) (string, error) {
|
||
/*if v, ok := value.(string); ok {
|
||
return v, nil
|
||
}
|
||
if v, ok := value.([]byte); ok {
|
||
return string(v), nil
|
||
}*/
|
||
b, err := json.Marshal(value)
|
||
if err != nil {
|
||
return "", err
|
||
}
|
||
return string(b), nil
|
||
}
|
||
|
||
func DecodeValue(value string, rtv interface{}) error {
|
||
//判断rtv的类型是否是string,如果是string,直接赋值并返回
|
||
/*switch rtv.(type) {
|
||
case *string:
|
||
*(rtv.(*string)) = value
|
||
return nil
|
||
case *[]byte:
|
||
*(rtv.(*[]byte)) = []byte(value)
|
||
return nil
|
||
//struct
|
||
case *interface{}:
|
||
err := json.Unmarshal(([]byte)(value), rtv)
|
||
return err
|
||
default:
|
||
err := json.Unmarshal(([]byte)(value), rtv)
|
||
return err
|
||
}
|
||
*/
|
||
err := json.Unmarshal(([]byte)(value), rtv)
|
||
return err
|
||
}
|