一、基本介绍
MemoryCache是一个基于内存的缓存服务,它是System.Runtime.Caching命名空间的一部分。它允许开发人员将频繁使用的数据或昂贵的计算结果存储在内存中,以便快速和有效地访问。
MemoryCache使用键值对来存储数据,数据在被添加到缓存时会附带一个过期时间。当缓存项目到达其过期时间或者系统在资源压力下时(例如,可用的物理内存太低),该项目会从缓存中删除。
二、简单示例
cs
using System;
using System.Runtime.Caching;
class Program
{
static void Main(string[] args)
{
// 创建内存缓存对象
MemoryCache cache = MemoryCache.Default;
// 添加数据到缓存
cache.Add("key", "value", DateTimeOffset.Now.AddMinutes(10));
// 获取缓存数据
object cachedData = cache.Get("key");
Console.WriteLine(cachedData); // 输出:value
}
}
对于分布式缓存,可以使用第三方库如StackExchange.Redis
或者Microsoft.Extensions.Caching.Redis
来实现。以下是一个使用StackExchange.Redis
的简单示例:
cs
using StackExchange.Redis;
using System;
class Program
{
static void Main(string[] args)
{
// 创建 Redis 连接
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
// 获取 Redis 数据库
IDatabase db = redis.GetDatabase();
// 添加数据到缓存
db.StringSet("key", "value");
// 获取缓存数据
string cachedData = db.StringGet("key");
Console.WriteLine(cachedData); // 输出:value
}
}
如果你想要设置缓存的过期时间,可以使用MemoryCacheEntryOptions
来设置滑动过期时间(SlidingExpiration)、绝对过期时间(AbsoluteExpiration)和相对于现在的绝对过期时间(AbsoluteExpirationRelativeToNow)。
cs
var options = new MemoryCacheEntryOptions().SetSlidingExpiration(TimeSpan.FromSeconds(20));
cache.SetString(key, value, options);