Skip to content

Commit 57e8cbc

Browse files
authored
Merge pull request #69 from qedus/redis-remove-global-var
Redis remove global var and some housekeeping
2 parents 4b0cefc + 9e1e88a commit 57e8cbc

File tree

4 files changed

+153
-33
lines changed

4 files changed

+153
-33
lines changed

.travis.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ sudo: false
33
go:
44
- 1.11.x
55
- 1.12.x
6+
- 1.13.x
67
env:
78
- REDIS_ADDR="localhost:6379" APPENGINE_DEV_APPSERVER="$HOME/google-cloud-sdk/bin/dev_appserver.py" GO111MODULE="on" DATASTORE_EMULATOR_HOST="localhost:8432" DATASTORE_PROJECT_ID="nds-test"
89
services:
@@ -16,7 +17,7 @@ install:
1617
- "$HOME/google-cloud-sdk/bin/gcloud components install app-engine-python --quiet"
1718
- "$HOME/google-cloud-sdk/bin/gcloud components install app-engine-go --quiet"
1819
- go get -v -d -t ./...
19-
- go get github.com/golangci/golangci-lint/cmd/golangci-lint
20+
- curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.23.1
2021
before_script:
2122
- "$HOME/google-cloud-sdk/bin/gcloud config set project nds-test"
2223
- "$HOME/google-cloud-sdk/bin/gcloud beta emulators datastore start --quiet --no-store-on-disk --consistency=1 --host-port=localhost:8432 &"

cachers/redis/redis.go

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -36,10 +36,6 @@ const (
3636
end`
3737
)
3838

39-
var (
40-
casSha = ""
41-
)
42-
4339
// NewCacher will return a nds.Cacher backed by
4440
// the provided redis pool. It will try and load a script
4541
// into the redis script cache and return an error if it is
@@ -54,17 +50,20 @@ func NewCacher(ctx context.Context, pool *redis.Pool) (n nds.Cacher, err error)
5450
}
5551
}()
5652

57-
if casSha, err = redis.String(conn.DoContext(ctx, "SCRIPT", "LOAD", casScript)); err != nil {
53+
b := backend{store: pool}
54+
55+
if b.casSha, err = redis.String(conn.DoContext(ctx, "SCRIPT", "LOAD", casScript)); err != nil {
5856
return
5957
}
6058

61-
n = &backend{store: pool}
59+
n = &b
6260

6361
return
6462
}
6563

6664
type backend struct {
67-
store *redis.Pool
65+
store *redis.Pool
66+
casSha string
6867
}
6968

7069
var bufPool = sync.Pool{
@@ -102,7 +101,7 @@ func set(ctx context.Context, conn redis.ConnWithContext, nx bool, items []*nds.
102101
defer close(meChan)
103102

104103
buf := bufPool.Get().(*bytes.Buffer)
105-
Loop:
104+
Loop:
106105
for _, item := range items {
107106
select {
108107
case <-ctx.Done():
@@ -136,7 +135,7 @@ Loop:
136135

137136
go func() {
138137
defer wg.Done()
139-
Loop2:
138+
Loop2:
140139
for i := 0; i < len(items); i++ {
141140
select {
142141
case <-ctx.Done():
@@ -199,7 +198,7 @@ func (b *backend) CompareAndSwapMulti(ctx context.Context, items []*nds.Item) (e
199198
defer close(meChan)
200199

201200
buf := bufPool.Get().(*bytes.Buffer)
202-
Loop:
201+
Loop:
203202
for _, item := range items {
204203
select {
205204
case <-ctx.Done():
@@ -215,7 +214,7 @@ Loop:
215214
if item.Expiration == 0 {
216215
expire = -1
217216
}
218-
if rerr := redisConn.SendContext(ctx, "EVALSHA", casSha, "1", item.Key, cas, buf.Bytes(), expire); rerr != nil {
217+
if rerr := redisConn.SendContext(ctx, "EVALSHA", b.casSha, "1", item.Key, cas, buf.Bytes(), expire); rerr != nil {
219218
meChan <- rerr
220219
}
221220
} else {
@@ -230,7 +229,7 @@ Loop:
230229

231230
go func() {
232231
defer wg.Done()
233-
Loop2:
232+
Loop2:
234233
for i := 0; i < len(items); i++ {
235234
select {
236235
case <-ctx.Done():

go.mod

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
module github.com/qedus/nds/v2
22

33
require (
4-
cloud.google.com/go v0.43.0
5-
github.com/hashicorp/golang-lru v0.5.3 // indirect
4+
cloud.google.com/go v0.51.0 // indirect
5+
cloud.google.com/go/datastore v1.0.0
6+
cloud.google.com/go/storage v1.5.0 // indirect
7+
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
8+
github.com/google/go-cmp v0.4.0 // indirect
69
github.com/opencensus-integrations/redigo v2.0.1+incompatible
710
github.com/patrickmn/go-cache v2.1.0+incompatible
8-
github.com/pkg/errors v0.8.1
9-
go.opencensus.io v0.22.0
10-
golang.org/x/net v0.0.0-20190724013045-ca1201d0de80 // indirect
11-
golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3 // indirect
12-
google.golang.org/appengine v1.6.1
13-
google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64 // indirect
14-
google.golang.org/grpc v1.22.1 // indirect
11+
github.com/pkg/errors v0.9.1
12+
go.opencensus.io v0.22.2
13+
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a // indirect
14+
golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa // indirect
15+
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d // indirect
16+
golang.org/x/sys v0.0.0-20200121082415-34d275377bf9 // indirect
17+
golang.org/x/tools v0.0.0-20200121230703-78d067421b02 // indirect
18+
google.golang.org/appengine v1.6.5
19+
google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24 // indirect
1520
)

0 commit comments

Comments
 (0)