本文整理汇总了C#中System.Runtime.Caching.MemoryCache.Trim方法的典型用法代码示例。如果您正苦于以下问题:C# MemoryCache.Trim方法的具体用法?C# MemoryCache.Trim怎么用?C# MemoryCache.Trim使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Runtime.Caching.MemoryCache
的用法示例。
在下文中一共展示了MemoryCache.Trim方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: InvalidationTests
public InvalidationTests(RedisServerFixture redisServer)
{
localCache = new MemoryCache(Guid.NewGuid().ToString());
localCache.Trim(100);
redisServer.Reset();
redis = redisServer;
InvalidationManager.notificationBus = null;
InvalidationManager.Configure("localhost:6379", new InvalidationSettings {
InvalidationStrategy = InvalidationStrategyType.All,
EnableKeySpaceNotifications = true,
TargetCache = localCache });
fixture = new Fixture();
}
示例2: Trim
public void Trim ()
{
var config = new NameValueCollection ();
config ["__MonoEmulateOneCPU"] = "true";
var mc = new MemoryCache ("MyCache", config);
for (int i = 0; i < 10; i++)
mc.Set ("key" + i.ToString (), "value" + i.ToString (), null);
// .NET doesn't touch the freshest 10 entries
Assert.AreEqual (10, mc.GetCount (), "#A1-1");
long trimmed = mc.Trim (50);
Assert.AreEqual (0, trimmed, "#A1-2");
Assert.AreEqual (10, mc.GetCount (), "#A1-3");
mc = new MemoryCache ("MyCache", config);
// Only entries 11- are considered for removal
for (int i = 0; i < 11; i++)
mc.Set ("key" + i.ToString (), "value" + i.ToString (), null);
Assert.AreEqual (11, mc.GetCount (), "#A2-1");
trimmed = mc.Trim (50);
Assert.AreEqual (1, trimmed, "#A2-2");
Assert.AreEqual (10, mc.GetCount (), "#A2-3");
mc = new MemoryCache ("MyCache", config);
// Only entries 11- are considered for removal
for (int i = 0; i < 125; i++)
mc.Set ("key" + i.ToString (), "value" + i.ToString (), null);
Assert.AreEqual (125, mc.GetCount (), "#A3-1");
trimmed = mc.Trim (50);
Assert.AreEqual (62, trimmed, "#A3-2");
Assert.AreEqual (63, mc.GetCount (), "#A3-3");
// Testing the removal order
mc = new MemoryCache ("MyCache", config);
var removed = new List <string> ();
var cip = new CacheItemPolicy ();
cip.RemovedCallback = (CacheEntryRemovedArguments args) => {
removed.Add (args.CacheItem.Key);
};
for (int i = 0; i < 50; i++)
mc.Set ("key" + i.ToString (), "value" + i.ToString (), cip);
object value;
for (int i = 0; i < 50; i++)
value = mc.Get ("key" + i.ToString ());
trimmed = mc.Trim (50);
Assert.AreEqual (25, mc.GetCount (), "#A4-1");
Assert.AreEqual (25, trimmed, "#A4-2");
Assert.AreEqual (25, removed.Count, "#A4-3");
// OK, this is odd... The list is correct in terms of entries removed but the entries
// are removed in the _MOST_ frequently used order, within the group selected for removal.
for (int i = 24; i >= 0; i--) {
int idx = 24 - i;
Assert.AreEqual ("key" + i.ToString (), removed [idx], "#A5-" + idx.ToString ());
}
}
示例3: Trim
public void Trim ()
{
var config = new NameValueCollection ();
config ["__MonoEmulateOneCPU"] = "true";
var mc = new MemoryCache ("MyCache", config);
for (int i = 0; i < 10; i++)
mc.Set ("key" + i.ToString (), "value" + i.ToString (), null);
Assert.AreEqual (10, mc.GetCount (), "#A1-1");
long trimmed = mc.Trim (50);
Assert.AreEqual (5, trimmed, "#A1-2");
Assert.AreEqual (5, mc.GetCount (), "#A1-3");
mc = new MemoryCache ("MyCache", config);
// Only entries 11- are considered for removal
for (int i = 0; i < 11; i++)
mc.Set ("key" + i.ToString (), "value" + i.ToString (), null);
Assert.AreEqual (11, mc.GetCount (), "#A2-1");
trimmed = mc.Trim (50);
Assert.AreEqual (6, trimmed, "#A2-2");
Assert.AreEqual (5, mc.GetCount (), "#A2-3");
mc = new MemoryCache ("MyCache", config);
// Only entries 11- are considered for removal
for (int i = 0; i < 125; i++)
mc.Set ("key" + i.ToString (), "value" + i.ToString (), null);
Assert.AreEqual (125, mc.GetCount (), "#A3-1");
trimmed = mc.Trim (50);
Assert.AreEqual (63, trimmed, "#A3-2");
Assert.AreEqual (62, mc.GetCount (), "#A3-3");
// Testing the removal order
mc = new MemoryCache ("MyCache", config);
var removed = new List <string> ();
var cip = new CacheItemPolicy ();
cip.RemovedCallback = (CacheEntryRemovedArguments args) => {
removed.Add (args.CacheItem.Key);
};
for (int i = 0; i < 50; i++)
mc.Set ("key" + i.ToString (), "value" + i.ToString (), cip);
object value;
for (int i = 0; i < 50; i++)
value = mc.Get ("key" + i.ToString ());
trimmed = mc.Trim (50);
Assert.AreEqual (25, mc.GetCount (), "#A4-1");
Assert.AreEqual (25, trimmed, "#A4-2");
Assert.AreEqual (25, removed.Count, "#A4-3");
for (int i = 0; i < 25; i++)
Assert.AreEqual ("key" + i.ToString (), removed [i], "#A5-" + i.ToString ());
}
示例4: MemorySizePerformance
private static void MemorySizePerformance()
{
/*
* Some numbers:
* ---------------------------------------------------------------------------------------------------------
* 10k objects
* ---------------------------------------------------------------------------------------------------------
* maxStringSize repeatStringSize serialized vs Raw compression vs raw
* 1 1 92.4% 93.8%
* 17 1 88.7% 90.0%
* 128 1 73.9% 74.7%
* 2 2 92.7% 93.8%
* 17 2 86.7% 89.7%
* 128 2 73.9% 74.7%
* 4 4 90.5% 91.6%
* 17 4 86.7% 89.7%
* 128 4 73.9% 68.8%
* 128 128 73.9% 56.8%
*
* 10,000 10,000 50.7% 1.8%
* 100,000 100,000 50.1% 0.2%
*/
const int MAX_STRING_SIZE = 10000;
const int REPEAT_STRING_SIZE = 10;
const int ITERATIONS = 1000;
const string KEY = "impt-key";
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
long mCs = GC.GetTotalMemory(true);
MemoryCache cM = new MemoryCache("cM");
for (int i = 0; i < ITERATIONS; i++)
{
var m = new MultipleProperties
{
Id = GenerateId(),
Name = GenerateString(MAX_STRING_SIZE, REPEAT_STRING_SIZE)
};
byte[] s = ProtoBufSerializer.Serialize(m);
byte[] c = SmartCompressor.Instance.CompressAsync(s).Result;
cM.Set(KEY + i.ToString(CultureInfo.InvariantCulture), c, null);
}
long mCe = GC.GetTotalMemory(true);
long compressMemory = mCe - mCs;
cM.Trim(100);
cM.Dispose();
// ReSharper disable once RedundantAssignment
cM = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
long mSs = GC.GetTotalMemory(true);
MemoryCache sM = new MemoryCache("sM");
for (int i = 0; i < ITERATIONS; i++)
{
var m = new MultipleProperties
{
Id = GenerateId(),
Name = GenerateString(MAX_STRING_SIZE, REPEAT_STRING_SIZE)
};
byte[] s = ProtoBufSerializer.Serialize(m);
sM.Set(KEY + i.ToString(CultureInfo.InvariantCulture), s, null);
}
long mSe = GC.GetTotalMemory(true);
long serializeMemory = mSe - mSs;
sM.Trim(100);
sM.Dispose();
// ReSharper disable once RedundantAssignment
sM = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
GC.WaitForPendingFinalizers();
long mRs = GC.GetTotalMemory(true);
MemoryCache rM = new MemoryCache("rM");
for (int i = 0; i < ITERATIONS; i++)
{
var m = new MultipleProperties
{
Id = GenerateId(),
Name = GenerateString(MAX_STRING_SIZE, REPEAT_STRING_SIZE)
};
rM.Set(KEY + i.ToString(CultureInfo.InvariantCulture), m, null);
}
//.........这里部分代码省略.........