@@ -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
6664type backend struct {
67- store * redis.Pool
65+ store * redis.Pool
66+ casSha string
6867}
6968
7069var 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 ():
0 commit comments