Skip to content

Commit b0dedb9

Browse files
committed
fix: concurrent lru
1 parent d8c468c commit b0dedb9

File tree

2 files changed

+45
-5
lines changed

2 files changed

+45
-5
lines changed

service/cache/cache.go

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,45 @@
11
package cache
22

33
import (
4+
"sync"
5+
46
"github.com/golang/groupcache/lru"
57
)
68

9+
type LruCache struct {
10+
*lru.Cache
11+
mutex sync.Mutex
12+
}
13+
14+
func NewLruCache(maxEntries int) *LruCache {
15+
return &LruCache{
16+
Cache: lru.New(maxEntries),
17+
}
18+
}
19+
20+
func (l *LruCache) Add(key lru.Key, value interface{}) {
21+
l.mutex.Lock()
22+
l.Cache.Add(key, value)
23+
l.mutex.Unlock()
24+
}
25+
func (l *LruCache) Get(key lru.Key) (value interface{}, ok bool) {
26+
l.mutex.Lock()
27+
value, ok = l.Cache.Get(key)
28+
l.mutex.Unlock()
29+
return
30+
}
31+
732
// int:PrivateMessage
8-
var PrivateMessageLru = lru.New(512)
33+
var PrivateMessageLru = NewLruCache(512)
934

1035
// int:GroupMessage
11-
var GroupMessageLru = lru.New(2048)
36+
var GroupMessageLru = NewLruCache(2048)
1237

1338
// string:
14-
var FriendRequestLru = lru.New(128)
39+
var FriendRequestLru = NewLruCache(128)
1540

1641
// string:
17-
var GroupRequestLru = lru.New(128)
42+
var GroupRequestLru = NewLruCache(128)
1843

1944
// string:
20-
var GroupInvitedRequestLru = lru.New(16)
45+
var GroupInvitedRequestLru = NewLruCache(16)

service/cache/cache_test.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package cache
2+
3+
import "testing"
4+
5+
func TestLruCache_Add(t *testing.T) {
6+
lruCache := NewLruCache(3)
7+
lruCache.Add(10, 10)
8+
v, ok := lruCache.Get(10)
9+
t.Logf("1: %+v %+v", v, ok)
10+
lruCache.Add(11, 10)
11+
lruCache.Add(13, 10)
12+
lruCache.Add(14, 10)
13+
v, ok = lruCache.Get(10)
14+
t.Logf("2: %+v %+v", v, ok)
15+
}

0 commit comments

Comments
 (0)