Update FileDbCache.cs

This commit is contained in:
ClemensFischer 2025-02-24 20:19:27 +01:00
parent 1338d0d1cc
commit de460142b8

View file

@ -23,7 +23,7 @@ namespace MapControl.Caching
private const string expiresField = "Expires"; private const string expiresField = "Expires";
private readonly FileDb fileDb = new FileDb { AutoFlush = true }; private readonly FileDb fileDb = new FileDb { AutoFlush = true };
private readonly Timer expirationScanTimer; private readonly Timer timer;
public FileDbCache(string path) public FileDbCache(string path)
: this(path, TimeSpan.FromHours(1)) : this(path, TimeSpan.FromHours(1))
@ -71,13 +71,13 @@ namespace MapControl.Caching
if (expirationScanFrequency > TimeSpan.Zero) if (expirationScanFrequency > TimeSpan.Zero)
{ {
expirationScanTimer = new Timer(_ => DeleteExpiredItems(), null, TimeSpan.Zero, expirationScanFrequency); timer = new Timer(_ => DeleteExpiredItems(), null, TimeSpan.Zero, expirationScanFrequency);
} }
} }
public void Dispose() public void Dispose()
{ {
expirationScanTimer?.Dispose(); timer?.Dispose();
fileDb.Dispose(); fileDb.Dispose();
} }
@ -89,14 +89,11 @@ namespace MapControl.Caching
try try
{ {
lock (fileDb) var record = fileDb.GetRecordByKey(key, new string[] { valueField, expiresField }, false);
{
var record = fileDb.GetRecordByKey(key, new string[] { valueField, expiresField }, false);
if (record != null && (DateTime)record[1] > DateTime.UtcNow) if (record != null && (DateTime)record[1] > DateTime.UtcNow)
{ {
value = (byte[])record[0]; value = (byte[])record[0];
}
} }
} }
catch (Exception ex) catch (Exception ex)
@ -123,17 +120,14 @@ namespace MapControl.Caching
try try
{ {
lock (fileDb) if (fileDb.GetRecordByKey(key, new string[0], false) != null)
{ {
if (fileDb.GetRecordByKey(key, new string[0], false) != null) fileDb.UpdateRecordByKey(key, fieldValues);
{ }
fileDb.UpdateRecordByKey(key, fieldValues); else
} {
else fieldValues.Add(keyField, key);
{ fileDb.AddRecord(fieldValues);
fieldValues.Add(keyField, key);
fileDb.AddRecord(fieldValues);
}
} }
} }
catch (Exception ex) catch (Exception ex)
@ -152,10 +146,7 @@ namespace MapControl.Caching
try try
{ {
lock (fileDb) fileDb.DeleteRecordByKey(key);
{
fileDb.DeleteRecordByKey(key);
}
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -165,16 +156,13 @@ namespace MapControl.Caching
public void DeleteExpiredItems() public void DeleteExpiredItems()
{ {
lock (fileDb) var deleted = fileDb.DeleteRecords(new FilterExpression(expiresField, DateTime.UtcNow, ComparisonOperatorEnum.LessThanOrEqual));
if (deleted > 0)
{ {
var deleted = fileDb.DeleteRecords(new FilterExpression(expiresField, DateTime.UtcNow, ComparisonOperatorEnum.LessThanOrEqual)); fileDb.Clean();
if (deleted > 0) Debug.WriteLine($"{nameof(FileDbCache)}: Deleted {deleted} expired items");
{
fileDb.Clean();
Debug.WriteLine($"{nameof(FileDbCache)}: Deleted {deleted} expired items");
}
} }
} }