28 lines
684 B
Go
28 lines
684 B
Go
|
|
package cache
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
"strconv"
|
||
|
|
)
|
||
|
|
|
||
|
|
const (
|
||
|
|
PDFRecognitionTaskQueue = "pdf_recognition_queue"
|
||
|
|
PDFRecognitionDistLock = "pdf_recognition_dist_lock"
|
||
|
|
)
|
||
|
|
|
||
|
|
func PushPDFTask(ctx context.Context, taskID int64) (int64, error) {
|
||
|
|
return RedisClient.LPush(ctx, PDFRecognitionTaskQueue, taskID).Result()
|
||
|
|
}
|
||
|
|
|
||
|
|
func PopPDFTask(ctx context.Context) (int64, error) {
|
||
|
|
result, err := RedisClient.BRPop(ctx, 0, PDFRecognitionTaskQueue).Result()
|
||
|
|
if err != nil {
|
||
|
|
return 0, err
|
||
|
|
}
|
||
|
|
return strconv.ParseInt(result[1], 10, 64)
|
||
|
|
}
|
||
|
|
|
||
|
|
func GetPDFDistributedLock(ctx context.Context) (bool, error) {
|
||
|
|
return RedisClient.SetNX(ctx, PDFRecognitionDistLock, "locked", DefaultLockTimeout).Result()
|
||
|
|
}
|