Fix memcache
This commit is contained in:
parent
ad9635920a
commit
38c820280e
@ -2,6 +2,7 @@ package rest
|
||||
|
||||
import (
|
||||
"crypto/md5"
|
||||
"encoding/base64"
|
||||
"github.com/bradfitz/gomemcache/memcache"
|
||||
"strings"
|
||||
)
|
||||
@ -26,7 +27,7 @@ func (mc MC) StoreToCache(key string, data []byte) error {
|
||||
|
||||
var item memcache.Item
|
||||
// item.Key = hashKey(prefixed_key)
|
||||
item.Key = prefixed_key
|
||||
item.Key = hashKey(prefixed_key)
|
||||
item.Value = data
|
||||
|
||||
// store
|
||||
@ -35,13 +36,12 @@ func (mc MC) StoreToCache(key string, data []byte) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// (mc MC) GetFromCache ...
|
||||
// GetFromCache get node data from memcache
|
||||
func (mc MC) GetFromCache(key string) ([]byte, error) {
|
||||
var data *memcache.Item
|
||||
prefixed_key := strings.Join([]string{mc.Prefix, key}, "_")
|
||||
|
||||
// data, err := mc.Client.Get(hashKey(prefixed_key))
|
||||
data, err := mc.Client.Get(prefixed_key)
|
||||
data, err := mc.Client.Get(hashKey(prefixed_key))
|
||||
if err != nil {
|
||||
return []byte(""), err
|
||||
}
|
||||
@ -49,10 +49,21 @@ func (mc MC) GetFromCache(key string) ([]byte, error) {
|
||||
return data.Value, err
|
||||
}
|
||||
|
||||
// hashKey return md5sum of prefixed_key
|
||||
// DeleteFromCache delete key from memcache
|
||||
func (mc MC) DeleteFromCache(key string) error {
|
||||
prefixed_key := strings.Join([]string{mc.Prefix, key}, "_")
|
||||
|
||||
err := mc.Client.Delete(hashKey(prefixed_key))
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
// hashKey return base64 encoded md5sum of prefixed_key
|
||||
func hashKey(key string) string {
|
||||
h := md5.New()
|
||||
sum := h.Sum([]byte(key))
|
||||
|
||||
return string(sum)
|
||||
b64 := base64.StdEncoding.EncodeToString(sum)
|
||||
|
||||
return b64
|
||||
}
|
||||
|
51
rest/zoo.go
51
rest/zoo.go
@ -50,17 +50,17 @@ func (z ZooNode) GetChildrens(path string) Ls {
|
||||
l.State = "OK"
|
||||
l.Path = path
|
||||
|
||||
if z.MC.Enabled {
|
||||
data, err := z.MC.GetFromCache(lsPath)
|
||||
if err != nil {
|
||||
log.Print("V1 LS ERROR: ", err.Error())
|
||||
} else {
|
||||
log.Print("We are get it from memecache!")
|
||||
childrens := strings.Split(string(data), ",")
|
||||
l.Childrens = childrens
|
||||
return l
|
||||
}
|
||||
}
|
||||
// if z.MC.Enabled {
|
||||
// data, err := z.MC.GetFromCache(lsPath)
|
||||
// if err != nil {
|
||||
// log.Print("V1 LS ERROR: ", err.Error())
|
||||
// } else {
|
||||
// log.Print("We are get it from memecache!")
|
||||
// childrens := strings.Split(string(data), ",")
|
||||
// l.Childrens = childrens
|
||||
// return l
|
||||
// }
|
||||
// }
|
||||
|
||||
childrens, zkStat, err := z.Conn.Children(lsPath)
|
||||
if err != nil {
|
||||
@ -69,13 +69,13 @@ func (z ZooNode) GetChildrens(path string) Ls {
|
||||
return l
|
||||
}
|
||||
|
||||
// Store to cache
|
||||
if z.MC.Enabled {
|
||||
err := z.MC.StoreToCache(lsPath, []byte(strings.Join(childrens, ",")))
|
||||
if err != nil {
|
||||
log.Print("V1 LS: ", err.Error())
|
||||
}
|
||||
}
|
||||
// // Store to cache
|
||||
// if z.MC.Enabled {
|
||||
// err := z.MC.StoreToCache(lsPath, []byte(strings.Join(childrens, ",")))
|
||||
// if err != nil {
|
||||
// log.Print("V1 LS: ", err.Error())
|
||||
// }
|
||||
// }
|
||||
|
||||
l.Error = ""
|
||||
l.Childrens = childrens
|
||||
@ -105,7 +105,7 @@ func (z ZooNode) GetNode(path string) Get {
|
||||
// Get data from memcached
|
||||
if z.MC.Enabled {
|
||||
if data, err := z.MC.GetFromCache(getPath); err != nil {
|
||||
log.Print("V1 GET: ", err.Error())
|
||||
log.Print("[mc ERROR] ", err.Error())
|
||||
} else {
|
||||
g.Data = data
|
||||
return g
|
||||
@ -123,7 +123,7 @@ func (z ZooNode) GetNode(path string) Get {
|
||||
if z.MC.Enabled {
|
||||
err := z.MC.StoreToCache(getPath, data)
|
||||
if err != nil {
|
||||
log.Print("V1 LS: ", err.Error())
|
||||
log.Print("[mc ERROR] ", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
@ -151,9 +151,16 @@ func (z ZooNode) RMR(path string) {
|
||||
err = z.Conn.Delete(path, -1)
|
||||
if err != nil {
|
||||
log.Print("[zk ERROR] ", err)
|
||||
} else {
|
||||
if z.MC.Enabled {
|
||||
err := z.MC.DeleteFromCache(path)
|
||||
if err != nil {
|
||||
log.Print("[mc ERROR] ", err.Error())
|
||||
}
|
||||
}
|
||||
log.Print("[WARNING] ", path, " deleted")
|
||||
}
|
||||
}
|
||||
|
||||
// CreateNode ...
|
||||
func (z ZooNode) CreateNode(path string, content []byte) string {
|
||||
@ -190,7 +197,7 @@ func (z ZooNode) UpdateNode(path string, content []byte) string {
|
||||
|
||||
if z.MC.Enabled {
|
||||
if err := z.MC.StoreToCache(upPath, content); err != nil {
|
||||
log.Print("V1 update ERROR: ", err.Error())
|
||||
log.Print("[mc ERROR] ", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
@ -214,7 +221,7 @@ func (z ZooNode) CreateChild(path string, content []byte) string {
|
||||
|
||||
if z.MC.Enabled {
|
||||
if err := z.MC.StoreToCache(crPath, content); err != nil {
|
||||
log.Print("V1 create ERROR: ", err.Error())
|
||||
log.Print("[mc ERROR] ", err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user