package redis import ( "context" "time" ) // Get 获取 func Get(key string) (string, error) { return client.Get(context.Background(), key).Result() } // Set 设置 func Set(key string, value string, duration time.Duration) error { _, err := client.Set(context.Background(), key, value, duration).Result() return err } // Has 判断key是否存在 func Has(key string) (bool, error) { c, err := client.Exists(context.TODO(), key).Result() return c > 0, err } // Remove 删除缓存 func Remove(key string) error { return client.Del(context.Background(), key).Err() } // BaseLock 基础分布式锁 func BaseLock(key string, value string, duration time.Duration) bool { result := client.SetNX(context.Background(), key, value, duration) return result.Val() } // Lock 分布式执行函数 func Lock(key string, duration time.Duration, handle func()) { result := client.SetNX(context.Background(), key, "0", duration) if result.Val() { //defer func() { // err := Remove(key) // if err != nil { // fmt.Println("Lock_remove_err ", err) // } //}() handle() } }