C# Webapi手动刷新Redis缓存
时间: 2024-09-29 07:13:53 浏览: 42
在C#中,如果你想要手动刷新Redis缓存,通常你会使用像StackExchange.Redis这样的Redis客户端库。以下是一个简单的示例:
```csharp
using StackExchange.Redis;
public class MyController : ControllerBase
{
private readonly ConnectionMultiplexer _redisConnection;
public MyController(ConnectionMultiplexer redisConnection)
{
_redisConnection = redisConnection;
}
[HttpGet]
public ActionResult<string> GetCachedData(string key)
{
var cache = _redisConnection.GetDatabase();
// 判断键是否存在并已过期
if (!cache.KeyExists(key) || !cache.Ttl(key).Value > TimeSpan.Zero)
{
// 更新数据(假设从数据库获取)
var newData = GetDataFromDatabase(key);
// 设置新的过期时间(这里设置为5分钟)
cache.Set(key, newData, TimeSpan.FromMinutes(5));
}
return cache.StringGet(key);
}
private string GetDataFromDatabase(string key)
{
// 这里是你实际从数据库获取数据的逻辑
// ...
}
}
```
在这个例子中,`GetCachedData`方法首先检查指定的键是否存在于缓存,并判断其是否已经过期。如果不存在或者已经过期,就从数据库获取新数据,并将其存储回Redis,同时设置了新的过期时间。
阅读全文