C# 控制台程序 缓存
时间: 2024-09-14 17:02:39 浏览: 47
C#控制台星空模拟程序
在C#中,控制台程序可以使用多种方法来实现缓存,以便存储临时数据,避免重复计算或重复请求外部资源。缓存可以使用内置的数据结构,如字典(Dictionary)或哈希表(Hashtable),也可以使用专门的缓存库,如MemoryCache。
例如,MemoryCache是.NET Framework和.NET Core中提供的一个内存缓存机制,它允许开发者在内存中存储键值对,当需要快速访问数据时,可以先检查缓存中是否存在,如果存在则直接从缓存中读取,否则进行计算或从外部资源加载。
以下是一个简单的使用MemoryCache缓存的示例代码:
```csharp
using System;
using System.Runtime.Caching;
namespace ConsoleCachingExample
{
class Program
{
static void Main(string[] args)
{
// 创建内存缓存
MemoryCache cache = new MemoryCache("MyCache");
// 定义一个缓存项的键
string cacheKey = "MyCachedData";
// 尝试从缓存中获取数据
if (cache.Contains(cacheKey))
{
// 从缓存中获取数据
var cachedData = cache[cacheKey];
Console.WriteLine("从缓存中获取数据: " + cachedData.ToString());
}
else
{
// 这里是数据获取或计算的逻辑
var data = "需要被缓存的数据";
// 将数据放入缓存
cache.Add(cacheKey, data, DateTimeOffset.Now.AddMinutes(10));
Console.WriteLine("数据被添加到缓存。");
}
// 获取缓存统计信息
var stats = MemoryCache.Default.GetCacheStatistics();
Console.WriteLine($"缓存项总数: {stats.ItemCount}");
Console.WriteLine($"缓存命中数: {stats.CacheHits}");
Console.WriteLine($"缓存未命中数: {stats.CacheMisses}");
// 等待用户输入,防止程序直接退出
Console.ReadLine();
}
}
}
```
在这个例子中,我们创建了一个名为"MyCache"的MemoryCache实例,并尝试根据键"myCachedData"从缓存中检索数据。如果缓存中有数据,则直接输出;如果没有,则模拟数据加载,将数据存入缓存,并设置了一个超时时间。同时,还展示了如何获取缓存的统计信息。
阅读全文