干掉 RedisHelper,请这样用分布式缓存
前言
我们在项目中使用 Redis 时通常是写一个单例模式的 RedisHelper 静态类,暴露一些常用
的 Get、Set 等操作,在需要使用地方直接 RedisHelper.StringGet(xx,xx)就可以了,这样虽然
简单粗暴地满足我们对 Redis 的所有操作需要,但是这在 Asp.Net Core 的项目显得不是那么
优雅了。首先你的 RedisHelper 静态类无法使用 Asp.Net Core 容器,又如何优雅的通过依赖
注入获取 IConfiguration 中的配置项呢?既然我们使用 Asp.Net Core 这么优秀的框架,最佳
实践当然就是遵循官方建议的开发规范优雅的编写代码。
IDistributedCache
若要使用 SQL Server 分布式缓存,请添加对 Microsoft.Extensions.Caching.SqlServer 包
的包引用。
若要使用 Redis 分布式缓存,请添加对 Microsoft.Extensions.Caching.StackExchangeRedis
包的包引用。
若要使用 NCache 分布式缓存,请添加对 NCache.Microsoft.Extensions.Caching.OpenSource
包的包引用。
无论选择哪种实现,应用都将使用 IDistributedCache 接口与缓存进行交互。
来看下 IDistributedCache 这个接口的定义
namespace Microsoft.Extensions.Caching.Distributed;
///
/// Represents a distributed cache of serialized values.
///
public interface IDistributedCache
{
///
/// Gets a value with the given key.
///
byte[]? Get(string key);
///
/// Gets a value with the given key.
///
Task GetAsync(string key, CancellationToken token = default(CancellationToken));