initial import

This commit is contained in:
kevin
2020-07-26 17:09:05 +08:00
commit 7e3a369a8f
647 changed files with 54754 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
package redis
import (
"sync"
"sync/atomic"
)
var (
once sync.Once
lock sync.Mutex
instance *ScriptCache
)
type (
Map map[string]string
ScriptCache struct {
atomic.Value
}
)
func GetScriptCache() *ScriptCache {
once.Do(func() {
instance = &ScriptCache{}
instance.Store(make(Map))
})
return instance
}
func (sc *ScriptCache) GetSha(script string) (string, bool) {
cache := sc.Load().(Map)
ret, ok := cache[script]
return ret, ok
}
func (sc *ScriptCache) SetSha(script, sha string) {
lock.Lock()
defer lock.Unlock()
cache := sc.Load().(Map)
newCache := make(Map)
for k, v := range cache {
newCache[k] = v
}
newCache[script] = sha
sc.Store(newCache)
}