如何在.net核心中使用redis缓存页面?

问题描述 投票:2回答:2

我在某种程度上是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页面?

asp.net-mvc asp.net-core redis servicestack.redis
2个回答
1
投票

响应缓存中间件使用配置的任何分布式缓存。因此,您需要添加Redis distributed cache provider,然后添加response caching middleware

services.AddDistributedRedisCache(options =>
{
    options.Configuration = "localhost";
    options.InstanceName = "SampleInstance";
});
services.AddResponseCaching();

FWIW,您还应该更改现有代码以使用IDistributedCache的注入实例,而不是直接使用RedisClient。最终结果将是相同的(假设您已将Redis配置为分布式缓存提供程序),但您将从代码中抽象出实现。


0
投票

如果您使用ServiceStack RazorServiceStack 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) { ... }
}
© www.soinside.com 2019 - 2024. All rights reserved.