tkcashgame_v4/pkg/cache/rockscache/utils.go

50 lines
933 B
Go

package rockscache
import (
"context"
"log"
"runtime/debug"
"time"
"github.com/go-redis/redis/v8"
)
var verbose = false
// SetVerbose sets verbose mode.
func SetVerbose(v bool) {
verbose = v
}
func debugf(format string, args ...interface{}) {
if verbose {
log.Printf(format, args...)
}
}
func now() int64 {
return time.Now().Unix()
}
type redisConn interface {
Eval(ctx context.Context, script string, keys []string, args ...interface{}) *redis.Cmd
}
func callLua(ctx context.Context, rdb redisConn, script string, keys []string, args []interface{}) (interface{}, error) {
debugf("callLua: script=%s, keys=%v, args=%v", script, keys, args)
v, err := rdb.Eval(ctx, script, keys, args).Result()
if err == redis.Nil {
err = nil
}
debugf("callLua result: v=%v, err=%v", v, err)
return v, err
}
func withRecover(f func()) {
defer func() {
if r := recover(); r != nil {
debug.PrintStack()
}
}()
f()
}