知行学院重新架构Golang版后台
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

124 lines
2.9 KiB

package rediscontroll
import (
"fmt"
"main_exam_server/common"
"main_exam_server/loges"
"time"
"github.com/go-redis/redis/v8"
)
/**
*键操作
*/
//Keys():根据正则获取keys(获取所有的KEY)
func GetAllKey(rdb *redis.Client) map[int]interface{} {
// rdb := RedisInit()
keys, err := rdb.Keys(ctx, "*").Result()
if err != nil {
errStr := fmt.Sprintf("获取Key错误:%v", err)
loges.LongInit(errStr)
errAry := common.MapOutint()
errAry[0] = -1
return errAry
}
keyAry := common.MapOutint()
for index, value := range keys {
keyAry[index] = value
}
return keyAry
}
//获取键对应的值类型
func GetKeyType(rdb *redis.Client, keyName string) string {
// rdb := RedisInit()
vType, err := rdb.Type(ctx, keyName).Result()
if err != nil {
errStr := fmt.Sprintf("获取%v键类型错误:%v", keyName, err)
loges.LongInit(errStr)
return "err"
}
return vType
}
//删除键
func DelKey(rdb *redis.Client, keyName string) bool {
// rdb := RedisInit()
_, err := rdb.Del(ctx, keyName).Result()
if err != nil {
errStr := fmt.Sprintf("删除%v键类型错误:%v", keyName, err)
loges.LongInit(errStr)
return false
}
return true
}
//检查key是否存在
func ExistsIsTrue(rdb *redis.Client, keyName string) bool {
// rdb := RedisInit()
keyLenght, err := rdb.Exists(ctx, keyName).Result()
if err != nil {
errStr := fmt.Sprintf("%v键不存在:%v", keyName, err)
loges.LongInit(errStr)
return false
}
if keyLenght > 0 {
return true
}
return false
}
//设置有效期(秒计)
func SecondTermOfValidity(rdb *redis.Client, keyName string, timeval time.Duration) bool {
// rdb := RedisInit()
keyTime, err := rdb.Expire(ctx, keyName, timeval).Result()
if err != nil {
errStr := fmt.Sprintf("%v键设置错误:%v", keyName, err)
loges.LongInit(errStr)
return false
}
if keyTime {
return true
}
return false
}
//到某个时间点过期
func TimeNode(rdb *redis.Client, keyName string, timeVal time.Time) bool {
// rdb := RedisInit()
keyTime, err := rdb.ExpireAt(ctx, keyName, timeVal).Result()
if err != nil {
errStr := fmt.Sprintf("%v键设置错误:%v", keyName, err)
loges.LongInit(errStr)
return false
}
if keyTime {
return true
}
return false
}
//获取键剩余时间由多少秒
func KeyRemainingTimeSecond(rdb *redis.Client, keyName string) time.Duration {
// rdb := RedisInit()
RemainingKey, err := rdb.TTL(ctx, keyName).Result()
if err != nil {
errStr := fmt.Sprintf("%v键剩余时间获取错误:%v", keyName, err)
loges.LongInit(errStr)
return 0
}
return RemainingKey
}
//获取键剩余时间由多少毫秒
func KeyRemainingTimeMilliSecond(rdb *redis.Client, keyName string) time.Duration {
// rdb := RedisInit()
RemainingKey, err := rdb.PTTL(ctx, keyName).Result()
if err != nil {
errStr := fmt.Sprintf("%v键剩余时间获取错误:%v", keyName, err)
loges.LongInit(errStr)
return 0
}
return RemainingKey
}