在 .NET Core 中使用 Redis

目录

[步骤 1:使用 Docker 运行 Redis](#步骤 1:使用 Docker 运行 Redis)

[步骤 2:添加 Redis NuGet 包](#步骤 2:添加 Redis NuGet 包)

[步骤 3:配置 RedisProgram.cs](#步骤 3:配置 RedisProgram.cs)

[步骤 4:创建 Redis 服务](#步骤 4:创建 Redis 服务)

[步骤 5:在控制器中使用 Redis](#步骤 5:在控制器中使用 Redis)

步骤六:测试

结论


如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

Redis 是一个速度极快的内存键值存储系统,常用于缓存 、会话管理 和实时应用程序 。在本指南中,我们将通过一个简单的示例学习如何将 Redis 集成到**.NET Core Web API中。**

步骤 1:使用 Docker 运行 Redis

docker run --name redis-demo -d -p 6379:6379 redis

步骤 2:添加 Redis NuGet 包

dotnet add package StackExchange.Redis

步骤 3:配置 RedisProgram.cs

using StackExchange.Redis;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddSingleton<IConnectionMultiplexer>(sp =>

{

var configuration = builder.Configuration.GetConnectionString("Redis");

return ConnectionMultiplexer.Connect(configuration);

});

builder.Services.AddScoped<RedisCacheService>();

builder.Services.AddControllers();

var app = builder.Build();

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

添加连接字符串appsettings.json:

{

"ConnectionStrings": {

"Redis": "localhost:6379"

}

}

步骤 4:创建 Redis 服务

RedisCacheService.cs

using StackExchange.Redis;

using System.Text.Json;

public class RedisCacheService

{

private readonly IDatabase _db;

public RedisCacheService(IConnectionMultiplexer redis)

{

_db = redis.GetDatabase();

}

public async Task SetAsync<T>(string key, T value, TimeSpan? expiry = null)

{

var json = JsonSerializer.Serialize(value);

await _db.StringSetAsync(key, json, expiry);

}

public async Task<T?> GetAsync<T>(string key)

{

var value = await _db.StringGetAsync(key);

if (value.IsNullOrEmpty) return default;

return JsonSerializer.Deserialize<T>(value!);

}

public async Task RemoveAsync(string key)

{

await _db.KeyDeleteAsync(key);

}

}

步骤 5:在控制器中使用 Redis

Controllers/ProductsController.cs

using Microsoft.AspNetCore.Mvc;

ApiController

Route("api/\[controller\]")

public class ProductsController : ControllerBase

{

private readonly RedisCacheService _cache;

public ProductsController(RedisCacheService cache)

{

_cache = cache;

}

HttpGet("{id}")

public async Task<IActionResult> GetProduct(int id)

{

string key = $"product:{id}";

var product = await _cache.GetAsync<Product>(key);

if (product != null)

return Ok(product);

// Simulate DB fetch

product = new Product { Id = id, Name = $"Product {id}" };

await _cache.SetAsync(key, product, TimeSpan.FromMinutes(1));

return Ok(product);

}

}

public record Product

{

public int Id { get; set; }

public string Name { get; set; }

}

步骤六:测试

运行应用程序:

dotnet run

现在调用 API:

GET https://localhost:5001/api/products/1

首次请求 → 从数据库加载产品(模拟)。

下一个请求 → 会立即从 Redis 中响应。

结论

Redis + .NET Core =更快的应用和更好的可扩展性。

可用于缓存、会话、发布/订阅和实时应用。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

相关推荐
羑悻的小杀马特1 小时前
Redis持久化三剑客:RDB二进制快照、AOF文本日志、混合模式如何守护你的数据安全?
数据库·redis·缓存·aof·持久化存储·rdb
时间的拾荒人2 小时前
Redis 进阶实战:渐进式遍历、持久化机制与事务详解
数据库·redis·缓存
码哥字节19 小时前
缓存一致性:先删缓存还是先更新库?3 种方案对比 + 实战
redis
2501_9339232519 小时前
解读Redis:单线程模型
数据库·redis·缓存
我不会起名字32220 小时前
seq 空洞排查:Mongo 的 51 只是预留上界,Redis CURR 才是已消耗边界
redis·后端·mongodb·go·即时通讯·im·故障排查
时间的拾荒人1 天前
Redis 集合类型详解:Set 与 Zset
redis·缓存·面试
鶴哥只手遮天1 天前
《Redis 8.10.3 深度剖析》系列 ·第 17 章. 一个迟到十六年的类型
redis·后端·开源