package main import ( "context" "errors" "log/slog" "platform/pkg/env" "platform/pkg/logs" "platform/pkg/orm" "platform/pkg/rds" "time" "github.com/redis/go-redis/v9" ) func main() { Start() } func Start() { ctx := context.Background() env.Init() logs.Init() rds.Init() orm.Init() ticker := time.NewTicker(time.Second) defer ticker.Stop() for curr := range ticker.C { err := process(ctx, curr) if err != nil { panic(err) } } } func process(ctx context.Context, curr time.Time) error { // 获取并删除 script := redis.NewScript(` local result = redis.call('ZRANGEBYSCORE', KEYS[1], 0, ARGV[1]) if #result > 0 then redis.call('ZREMRANGEBYSCORE', KEYS[1], 0, ARGV[1]) end return result `) // 计算时间范围 // 执行脚本 result, err := script.Run(ctx, rds.Client, []string{"tasks:session"}, curr.Unix()).Result() if err != nil { return err } // 处理结果 list, ok := result.([]string) if !ok { return errors.New("failed to convert result to []string") } for _, item := range list { // 从数据库删除授权信息 slog.Debug(item) } return nil }