使用 ASP.NET Core 通过 Docker 探索 Redis 缓存 – 第一部分
回顾
在我之前的文章中,我们已经介绍了 Docker 和 Docker vs Container 的概念。
- 在本地机器上安装 Docker desktop
- Visual Studio/ Visual Studio Code
介绍
Redis 缓存是一种内存数据结构存储,可用作数据库、消息代理和缓存。它支持散列、集合、列表、字符串、流等数据结构。它还包括其他功能,例如
- 事务
- 发布/订阅
- 生存时间有限的钥匙
- 自动故障转移
运行Redis容器
通过运行从 Docker 中心拉取最新的 Redis 版本:
docker pull redis
这里我们给它一个名字(local-redis)并暴露默认的redis端口- 6379
docker run -d -p 6379:6379 --name local-redis redis
检查它是否正在运行:
docker ps
并查看日志输出:
docker logs local-redis
在容器中运行 Redis CLI
我们将在正在运行的容器中启动一个新的交互式会话(-it),并使用它来运行 redis-cli。
docker exec -it local-redis sh
现在我们附加到我们的 redis 容器。让我们运行 redis-cli
# redis-cli
尝试一些基本命令
如果我们发送一个“ping”,我们应该得到一个“Pong”返回
127.0.0.1:6379> ping
PONG
尝试添加更多命令,例如设置键、增量和计数器
127.0.0.1:6379> set name Anika
OK
127.0.0.1:6379> get name
“Anika”
127.0.0.1:6379> incr counter
(integer) 1
127.0.0.1:6379> incr counter
(integer) 2
127.0.0.1:6379> get counter
“2”
当我们完成后退出 redis-cli 和 sh
127.0.0.1:6379> exit
# exit
开始编码
现在,Redis 在 docker 中成功运行。那么,让我们从代码的角度来理解Redis是如何工作的。
我为本文创建了一个 asp.net core web-api 项目。将 StackExchange.Redis nuget 包添加到项目中
让我们从 Startup 类开始
public void ConfigureServices(IServiceCollection services) {
services.AddControllers();
IConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost");
services.AddScoped(x => redis.GetDatabase());
}
以上是连接Redis的代码。
在控制器中,我使用 key 属性从缓存中检索数据
[HttpGet("{key}")]
public async Task < string > GetAsync(string key) {
return await _database.StringGetAsync(key);
}
[HttpPost]
public async Task PostAsync([FromBody] KeyValuePair < string, string > keyValue) {
await _database.StringSetAsync(keyValue.Key, keyValue.Value);
}
上面的方法很简单,就是把KeyValuePair加入到Cache中。

似乎一切都按预期进行。
在文章的第 2 部分系列中,我将重点介绍在 docker 中运行当前应用程序以及容器(Redis 和我们的应用程序容器)之间的通信方式。
我希望你喜欢这篇文章。如果您觉得文章有趣,请点赞并分享。
常见问题FAQ
- 程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
- 请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!