мои кэши в моей MVC системе внезапно перестают синхронизироваться c с моей базой данных, и я не уверен, почему.
Я вызываю свой метод getInventoryCache, например,
public int On_Order_Count(Boolean dynamic, bool useCache)
{
if (!dynamic)
return On_Job_Order;
float? cacheValue = IGT.getInventoryCache("item", "OO", ID);
if (cacheValue != null && useCache)
return (int)Math.Ceiling((float)cacheValue);
}
Вот мой метод получения инвентаризации
public static float? getInventoryCache(string type, string att, int id)
{
string cacheKey = "inv-" + type + "-" + att + "-" + id.ToString();
if (InventoryCache.Contains(cacheKey))
{
debugLog("get " + cacheKey + ": "+InventoryCache[cacheKey]);
return (float)InventoryCache[cacheKey];
}
return null;
}
, а вот мой метод инвентаризации набора
public static void setInventoryCache(string type, string att, int id, float val)
{
string cacheKey = "inv-" + type + "-" + att + "-" + id.ToString();
debugLog("set " + cacheKey + " = " + val);
// expire cached items randomly so they don't all expire at the same time and need to be
// re-cached
int expire = random.Next(30, 90);
CacheItemPolicy cip = new CacheItemPolicy
{
RemovedCallback = new CacheEntryRemovedCallback(removeCallBack),
AbsoluteExpiration = DateTimeOffset.Now.AddMinutes(expire),
};
InventoryCache.Set(cacheKey, val, cip);
}
Мои кэши больше не соответствуют тому, что есть в моей базе данных, хотя, например, мой значение кэша равно 250, а значение моей базы данных - 500. Я больше не уверен, что значения базы данных или значения кэша верны, но в чем причина того, что мои кэши не синхронизированы c с моей базой данных?