我是Redis的新手,如果您要缓存列表或对象或类似的东西,我知道Redis很容易,但是我不知道如何在Redis中存储我的网页? 请注意,我将servicestack用作我的Redis客户端,并使用服务栈将数据保存到我的Redis中,我正在使用以下代码:
IRedisClient redisClient = new RedisClient();
var rc = redisClient.As<person>();
rc.Store(new person()
{
Id = 1,
Name = "foo"
});
rc.Store(new person()
{
Id = 2,
Name = "bar"
});
var result = rc.GetAll();
正如我之前告诉您的那样,我在脑海中有一个很大的问题
如何使用Redis在.net核心Web应用程序中缓存.html或.cshtml页面?
答案 0 :(得分:1)
响应缓存中间件使用配置的任何分布式缓存。因此,您需要添加Redis distributed cache provider,然后添加response caching middleware:
services.AddDistributedRedisCache(options =>
{
options.Configuration = "localhost";
options.InstanceName = "SampleInstance";
});
services.AddResponseCaching();
FWIW,您还应该更改现有代码以利用IDistributedCache
的注入实例,而不是直接使用RedisClient
。最终结果将是相同的(假设您已将Redis配置为分布式缓存提供程序),但是您将从代码中提取实现。
答案 1 :(得分:0)
如果您使用ServiceStack Razor或ServiceStack Templates生成视图,则可以使用[CachedResponse] attribute来缓存服务的输出响应,例如:
[CacheResponse(Duration = 60)]
public class CachedServices : Service
{
public object Any(GetCustomer request) { ... }
public object Any(GetCustomerOrders request) { ... }
}
注释您的服务将缓存所有服务的输出响应,否则,您可以将其添加到服务实现方法中以将其临时存储,例如:
public class CachedServices : Service
{
public object Any(GetCustomer request) { ... }
[CacheResponse(Duration = 60)]
public object Any(GetCustomerOrders request) { ... }
}