51 lines
1.1 KiB
Go
51 lines
1.1 KiB
Go
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()
|
|
}
|
|
}
|