15759f60 by astaxie

Merge pull request #692 from fuxiaohei/develop

code style simplify
2 parents a6379481 0e3e22ef
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
7 // @license http://github.com/astaxie/beego/blob/master/LICENSE 7 // @license http://github.com/astaxie/beego/blob/master/LICENSE
8 // 8 //
9 // @authors astaxie 9 // @authors astaxie
10 package cache 10 package memcache
11 11
12 import ( 12 import (
13 "encoding/json" 13 "encoding/json"
...@@ -20,7 +20,7 @@ import ( ...@@ -20,7 +20,7 @@ import (
20 20
21 // Memcache adapter. 21 // Memcache adapter.
22 type MemcacheCache struct { 22 type MemcacheCache struct {
23 c *memcache.Connection 23 conn *memcache.Connection
24 conninfo string 24 conninfo string
25 } 25 }
26 26
...@@ -31,32 +31,23 @@ func NewMemCache() *MemcacheCache { ...@@ -31,32 +31,23 @@ func NewMemCache() *MemcacheCache {
31 31
32 // get value from memcache. 32 // get value from memcache.
33 func (rc *MemcacheCache) Get(key string) interface{} { 33 func (rc *MemcacheCache) Get(key string) interface{} {
34 if rc.c == nil { 34 if rc.conn == nil {
35 var err error 35 if err := rc.connectInit(); err != nil {
36 rc.c, err = rc.connectInit()
37 if err != nil {
38 return err 36 return err
39 } 37 }
40 } 38 }
41 v, err := rc.c.Get(key) 39 if v, err := rc.conn.Get(key); err == nil {
42 if err != nil { 40 if len(v) > 0 {
43 return nil 41 return string(v[0].Value)
44 } 42 }
45 var contain interface{}
46 if len(v) > 0 {
47 contain = string(v[0].Value)
48 } else {
49 contain = nil
50 } 43 }
51 return contain 44 return nil
52 } 45 }
53 46
54 // put value to memcache. only support string. 47 // put value to memcache. only support string.
55 func (rc *MemcacheCache) Put(key string, val interface{}, timeout int64) error { 48 func (rc *MemcacheCache) Put(key string, val interface{}, timeout int64) error {
56 if rc.c == nil { 49 if rc.conn == nil {
57 var err error 50 if err := rc.connectInit(); err != nil {
58 rc.c, err = rc.connectInit()
59 if err != nil {
60 return err 51 return err
61 } 52 }
62 } 53 }
...@@ -64,7 +55,7 @@ func (rc *MemcacheCache) Put(key string, val interface{}, timeout int64) error { ...@@ -64,7 +55,7 @@ func (rc *MemcacheCache) Put(key string, val interface{}, timeout int64) error {
64 if !ok { 55 if !ok {
65 return errors.New("val must string") 56 return errors.New("val must string")
66 } 57 }
67 stored, err := rc.c.Set(key, 0, uint64(timeout), []byte(v)) 58 stored, err := rc.conn.Set(key, 0, uint64(timeout), []byte(v))
68 if err == nil && stored == false { 59 if err == nil && stored == false {
69 return errors.New("stored fail") 60 return errors.New("stored fail")
70 } 61 }
...@@ -73,60 +64,52 @@ func (rc *MemcacheCache) Put(key string, val interface{}, timeout int64) error { ...@@ -73,60 +64,52 @@ func (rc *MemcacheCache) Put(key string, val interface{}, timeout int64) error {
73 64
74 // delete value in memcache. 65 // delete value in memcache.
75 func (rc *MemcacheCache) Delete(key string) error { 66 func (rc *MemcacheCache) Delete(key string) error {
76 if rc.c == nil { 67 if rc.conn == nil {
77 var err error 68 if err := rc.connectInit(); err != nil {
78 rc.c, err = rc.connectInit()
79 if err != nil {
80 return err 69 return err
81 } 70 }
82 } 71 }
83 _, err := rc.c.Delete(key) 72 _, err := rc.conn.Delete(key)
84 return err 73 return err
85 } 74 }
86 75
87 // [Not Support] 76 // [Not Support]
88 // increase counter. 77 // increase counter.
89 func (rc *MemcacheCache) Incr(key string) error { 78 func (rc *MemcacheCache) Incr(_ string) error {
90 return errors.New("not support in memcache") 79 return errors.New("not support in memcache")
91 } 80 }
92 81
93 // [Not Support] 82 // [Not Support]
94 // decrease counter. 83 // decrease counter.
95 func (rc *MemcacheCache) Decr(key string) error { 84 func (rc *MemcacheCache) Decr(_ string) error {
96 return errors.New("not support in memcache") 85 return errors.New("not support in memcache")
97 } 86 }
98 87
99 // check value exists in memcache. 88 // check value exists in memcache.
100 func (rc *MemcacheCache) IsExist(key string) bool { 89 func (rc *MemcacheCache) IsExist(key string) bool {
101 if rc.c == nil { 90 if rc.conn == nil {
102 var err error 91 if err := rc.connectInit(); err != nil {
103 rc.c, err = rc.connectInit()
104 if err != nil {
105 return false 92 return false
106 } 93 }
107 } 94 }
108 v, err := rc.c.Get(key) 95 v, err := rc.conn.Get(key)
109 if err != nil { 96 if err != nil {
110 return false 97 return false
111 } 98 }
112 if len(v) == 0 { 99 if len(v) == 0 {
113 return false 100 return false
114 } else {
115 return true
116 } 101 }
102 return true
117 } 103 }
118 104
119 // clear all cached in memcache. 105 // clear all cached in memcache.
120 func (rc *MemcacheCache) ClearAll() error { 106 func (rc *MemcacheCache) ClearAll() error {
121 if rc.c == nil { 107 if rc.conn == nil {
122 var err error 108 if err := rc.connectInit(); err != nil {
123 rc.c, err = rc.connectInit()
124 if err != nil {
125 return err 109 return err
126 } 110 }
127 } 111 }
128 err := rc.c.FlushAll() 112 return rc.conn.FlushAll()
129 return err
130 } 113 }
131 114
132 // start memcache adapter. 115 // start memcache adapter.
...@@ -139,23 +122,22 @@ func (rc *MemcacheCache) StartAndGC(config string) error { ...@@ -139,23 +122,22 @@ func (rc *MemcacheCache) StartAndGC(config string) error {
139 return errors.New("config has no conn key") 122 return errors.New("config has no conn key")
140 } 123 }
141 rc.conninfo = cf["conn"] 124 rc.conninfo = cf["conn"]
142 var err error 125 if rc.conn == nil {
143 if rc.c != nil { 126 if err := rc.connectInit(); err != nil {
144 rc.c, err = rc.connectInit() 127 return err
145 if err != nil {
146 return errors.New("dial tcp conn error")
147 } 128 }
148 } 129 }
149 return nil 130 return nil
150 } 131 }
151 132
152 // connect to memcache and keep the connection. 133 // connect to memcache and keep the connection.
153 func (rc *MemcacheCache) connectInit() (*memcache.Connection, error) { 134 func (rc *MemcacheCache) connectInit() error {
154 c, err := memcache.Connect(rc.conninfo) 135 c, err := memcache.Connect(rc.conninfo)
155 if err != nil { 136 if err != nil {
156 return nil, err 137 return err
157 } 138 }
158 return c, nil 139 rc.conn = c
140 return nil
159 } 141 }
160 142
161 func init() { 143 func init() {
......
...@@ -49,15 +49,14 @@ func NewMemoryCache() *MemoryCache { ...@@ -49,15 +49,14 @@ func NewMemoryCache() *MemoryCache {
49 func (bc *MemoryCache) Get(name string) interface{} { 49 func (bc *MemoryCache) Get(name string) interface{} {
50 bc.lock.RLock() 50 bc.lock.RLock()
51 defer bc.lock.RUnlock() 51 defer bc.lock.RUnlock()
52 itm, ok := bc.items[name] 52 if itm, ok := bc.items[name]; ok {
53 if !ok { 53 if (time.Now().Unix() - itm.Lastaccess.Unix()) > itm.expired {
54 return nil 54 go bc.Delete(name)
55 } 55 return nil
56 if (time.Now().Unix() - itm.Lastaccess.Unix()) > itm.expired { 56 }
57 go bc.Delete(name) 57 return itm.val
58 return nil
59 } 58 }
60 return itm.val 59 return nil
61 } 60 }
62 61
63 // Put cache to memory. 62 // Put cache to memory.
...@@ -65,12 +64,11 @@ func (bc *MemoryCache) Get(name string) interface{} { ...@@ -65,12 +64,11 @@ func (bc *MemoryCache) Get(name string) interface{} {
65 func (bc *MemoryCache) Put(name string, value interface{}, expired int64) error { 64 func (bc *MemoryCache) Put(name string, value interface{}, expired int64) error {
66 bc.lock.Lock() 65 bc.lock.Lock()
67 defer bc.lock.Unlock() 66 defer bc.lock.Unlock()
68 t := MemoryItem{ 67 bc.items[name] = &MemoryItem{
69 val: value, 68 val: value,
70 Lastaccess: time.Now(), 69 Lastaccess: time.Now(),
71 expired: expired, 70 expired: expired,
72 } 71 }
73 bc.items[name] = &t
74 return nil 72 return nil
75 } 73 }
76 74
...@@ -82,8 +80,7 @@ func (bc *MemoryCache) Delete(name string) error { ...@@ -82,8 +80,7 @@ func (bc *MemoryCache) Delete(name string) error {
82 return errors.New("key not exist") 80 return errors.New("key not exist")
83 } 81 }
84 delete(bc.items, name) 82 delete(bc.items, name)
85 _, valid := bc.items[name] 83 if _, ok := bc.items[name]; ok {
86 if valid {
87 return errors.New("delete key error") 84 return errors.New("delete key error")
88 } 85 }
89 return nil 86 return nil
...@@ -214,8 +211,7 @@ func (bc *MemoryCache) item_expired(name string) bool { ...@@ -214,8 +211,7 @@ func (bc *MemoryCache) item_expired(name string) bool {
214 if !ok { 211 if !ok {
215 return true 212 return true
216 } 213 }
217 sec := time.Now().Unix() - itm.Lastaccess.Unix() 214 if time.Now().Unix()-itm.Lastaccess.Unix() >= itm.expired {
218 if sec >= itm.expired {
219 delete(bc.items, name) 215 delete(bc.items, name)
220 return true 216 return true
221 } 217 }
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!