欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

.net core 分布式缓存

程序员文章站 2024-01-04 11:15:03
...

IDistributedCache接口

IDistributedCache表示分布式缓存接口,其接口如下:

public interface IDistributedCache
{
    // 获取键为key的缓存项
    byte[] Get(string key);
    Task<byte[]> GetAsync(string key, CancellationToken token = default);

    // 移除键为key的缓存项
    void Remove(string key);
	Task RemoveAsync(string key, CancellationToken token = default);

    // 设置键为key的缓存项
    void Set(string key, byte[] value, DistributedCacheEntryOptions options);
    Task SetAsync(string key, byte[] value, DistributedCacheEntryOptions options, CancellationToken token = default);
}

注册分布式缓存服务

内存分布式缓存

services.AddDistributedMemoryCache();

注:内存分布式缓存使用的是本地内存,但其确实现的分布式缓存的接口

Redis分布式缓存

services.AddStackExchangeRedisCache (options => {
    // 配置 Redis 连接字符串
    // 127.0.0.1:6379 为 Redis 服务地址,123456 为 Redis 连接密码
    options.Configuration = "127.0.0.1:6379,password=123456";
    // 随便起的实例名,我们在 Redis 服务器保存的 key 均以该实例名开头
    options.InstanceName = "SampleInstance";
});

示例

public class ValuesController : ControllerBase {
    private readonly IDistributedCache _cache;

    // 注入分布式缓存
    public ValuesController (IDistributedCache cache) {
        _cache = cache;
	}

    [HttpGet]
    public ActionResult<string> Get () {
        // 获取键为 mykey1 的缓存项
        string value = _cache.GetString ("mykey1");
        if (string.IsNullOrEmpty (value)) {
            // 设置键为 mykey1 的缓存项
            _cache.SetString ("mykey1", "abc");
            return "no value";
        }

        return value;
	}

    [HttpGet]
    public ActionResult Remove () {
        // 从缓存中移除键为mykey1的缓存项
        _cache.Remove ("mykey1");

        return Ok ();
    }
}

上一篇:

下一篇: