This commit is contained in:
xy
2026-03-13 01:38:40 +00:00
parent e6e4f88257
commit 28855885cd
311 changed files with 89544 additions and 94350 deletions
+46 -46
View File
@@ -1,46 +1,46 @@
import { fromCallback } from 'bluebird';
import { scheduleJob } from 'node-schedule';
import { nowSeconds } from '../pubUtils/timeUtil';
import { RedlockService } from '../services/redLockService';
interface UserCache {
time: number;
lock: any;
}
var userCacheMap = new Map<string, UserCache>();
export function init() {
scheduleJob('clearDirtyData', "0/5 * * * * *", clearDirtyData);//每个5秒钟,释放redis锁
}
/**
* 释放锁
*/
export function clearDirtyData() {
userCacheMap.forEach(function(userCache, key) {
if(nowSeconds() > userCache.time + 10){
console.log('show lock =' + JSON.stringify(userCache.lock));
releaseLock(key);
}
})
}
/**
* 根据key解锁
* @param lockKey
*/
export function releaseLock(lockKey: string) {
var userCache = userCacheMap.get(lockKey);
if (!!userCache && userCache.lock){
// unlock your resource when you are done
userCache.lock.unlock();
}
userCacheMap.delete(lockKey);
}
export function setLock(lockKey: string, lock: any){
userCacheMap.set(lockKey, {lock, time: nowSeconds()})
};
export function getLock(lockKey: string) {
var userCache = userCacheMap.get(lockKey);
return !!userCache && !!userCache.lock
}
import { fromCallback } from 'bluebird';
import { scheduleJob } from 'node-schedule';
import { nowSeconds } from '@pubUtils/timeUtil';
import { RedlockService } from '../services/redLockService';
interface UserCache {
time: number;
lock: any;
}
var userCacheMap = new Map<string, UserCache>();
export function init() {
scheduleJob('clearDirtyData', "0/5 * * * * *", clearDirtyData);//每个5秒钟,释放redis锁
}
/**
* 释放锁
*/
export function clearDirtyData() {
userCacheMap.forEach(function(userCache, key) {
if(nowSeconds() > userCache.time + 10){
console.log('show lock =' + JSON.stringify(userCache.lock));
releaseLock(key);
}
})
}
/**
* 根据key解锁
* @param lockKey
*/
export function releaseLock(lockKey: string) {
var userCache = userCacheMap.get(lockKey);
if (!!userCache && userCache.lock){
// unlock your resource when you are done
userCache.lock.unlock();
}
userCacheMap.delete(lockKey);
}
export function setLock(lockKey: string, lock: any){
userCacheMap.set(lockKey, {lock, time: nowSeconds()})
};
export function getLock(lockKey: string) {
var userCache = userCacheMap.get(lockKey);
return !!userCache && !!userCache.lock
}