diff --git a/cache/cache.go b/cache/cache.go index a0e6fed4..4edcc2a7 100644 --- a/cache/cache.go +++ b/cache/cache.go @@ -4,7 +4,6 @@ import ( "github.com/astaxie/beego/cache" "time" "encoding/gob" - "fmt" "bytes" "errors" "github.com/astaxie/beego" @@ -27,11 +26,23 @@ func Get(key string,e interface{}) error { err := decoder.Decode(e) if err != nil { - fmt.Println("反序列化对象失败 ->", err) + beego.Error("反序列化对象失败 ->", err) } return err + }else if s,ok := val.(string); ok && s != "" { + + buf := bytes.NewBufferString(s) + + decoder := gob.NewDecoder(buf) + + err := decoder.Decode(e) + + if err != nil { + beego.Error("反序列化对象失败 ->", err) } - return errors.New("value is not []byte") + return err + } + return errors.New("value is not []byte or string") } func GetMulti(keys []string) []interface{} { diff --git a/models/Blog.go b/models/Blog.go index 93f3ff10..ae6776aa 100644 --- a/models/Blog.go +++ b/models/Blog.go @@ -104,11 +104,14 @@ func (b *Blog) Find(blogId int) (*Blog,error) { func (b *Blog) FindFromCache(blogId int) (blog *Blog,err error) { key := fmt.Sprintf("blog-id-%d",blogId); var temp Blog - if err := cache.Get(key,&temp); err == nil { + err = cache.Get(key,&temp); + if err == nil { b = &temp b.Link() - beego.Info("从缓存读取文章成功 ->", key) + beego.Debug("从缓存读取文章成功 ->", key) return b,nil + }else { + beego.Error("读取缓存失败 ->",err) } blog,err = b.Find(blogId)