Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。
Redis的性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
Redis支持数据的高并发、高可用,如主从模式、哨兵模式、cluster集群模式
将 安装包 Redis-x64-3.2.100.zip ,解压到C盘或D盘根目录下,就完成了安装。安装包下载
将以上安装目录添加到环境变量Path中,如下图:
设置Redis服务器的密码,打开安装目录下的redis.windows.conf配置文件,找到“requirepass”,设置为自己的密码。
启动Redis服务器。打开一个 命令行控制台窗口(小黑窗),cd命令切换到安装目录 ,输入以下命令启动
redis-server.exe redis.windows.conf
如下图:
在Redis的安装目录,打开cmd,然后输入以下命令:
安装服务的命令:
redis-server.exe --service-install redis.windows.conf --loglevel verbose
卸载服务的命令:
redis-server --service-uninstall
以上步骤结束之后,在任务管理器的“服务”中,启动Redis服务
打开CMD或者PowerShell,命令提示符里,打开Redis的客户端,输入以下指令:
redis-cli -p 6379 -a 123456
注:redis-cli为命令, 6379为Redis默认端口号, 123456为登录密码
使用Redis Desktop Manager(简称RDM)桌面客户端进行访问;
点击“确定”后连接上Redis服务器,并显示db0~db15共16个数据库
开发环境:
操作系统: Windows 10 专业版
平台版本是:.NET 6
开发框架:ASP.NET Core WebApi
开发工具:Visual Studio 2022
ASP.NET Core中推荐使用FreeRedis客户端库来连接Redis服务器。
以下这些都是操作Redis的.NET客户端组件,为什么使用FreeRedis这个组件呢?
ServiceStack.Redis 是商业版,免费版有限制;
StackExchange.Redis 是免费版,但是内核在 .NETCore 运行有问题经常 Timeout,暂无法解决;
CSRedis于2016年开始支持.NETCore一直迭代至今,实现了低门槛、高性能,和分区高级玩法的.NETCore redis-cli SDK;后来作者重构了CSRedis,变成更简易的 FreeRedis,目前推荐大家使用 FreeRedis,支持几乎所有 .NET 平台和 AOT。FreeRedis官网
直接使用Visual Studio中的Nuget包管理器搜索安装:
或者使用dotnet命令行添加FreeRedis
dotnet add package FreeRedis
在appsetting.json中配置redis的连接字符串;
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
//redis连接字符串
"RedisCon": "127.0.0.1:6379,password=123456,defaultDatabase=1",
}
在Program.cs中注册FreeRedis的单例服务;
//引用
using FreeRedis;
//...
//获取连接字符串
string redisConnectionString = builder.Configuration.GetSection("RedisCon").Value;
//注册RedisClient服务
builder.Services.AddSingleton(r =>
{
var cli = new RedisClient(redisConnectionString);
//cli.Serialize = obj => JsonConvert.SerializeObject(obj); //序列化
//cli.Deserialize = (json, type) => JsonConvert.DeserializeObject(json, type); //反序列化
cli.Notice += (s, e) => Console.WriteLine(e.Log); //打印命令日志
return cli;
});
using FreeRedis;
[Route("api/[controller]/[action]")]
[ApiController]
public class RedisDemoController : ControllerBase
{
private readonly RedisClient _redisClient;
//构造方法 依赖注入 RedisClient
public RedisDemoController(RedisClient redisClient)
{
this._redisClient = redisClient;
}
[HttpPost]
public IActionResult TestRedisString()
{
Book book = new Book() { Id = 10, ISBN = "1341324123", CategoryId = 1, Title = "论语" };
// 使用字符串类型 -缓存一本书 1小时后过期
_redisClient.Set("hello", book, 3600);
// 根据键获取对应的值
var result = _redisClient.Get("hello");
return Ok(result);
}
[HttpPost]
public IActionResult TestRedisHash()
{
Book book1 = new Book() { Id = 11, ISBN = "134176324123", CategoryId = 1, Title = "孟子" };
Book book2 = new Book() { Id = 12, ISBN = "134132415623", CategoryId = 1, Title = "老子" };
//使用哈希类型-缓存两本书 1小时后过期
_redisClient.HSet("books", book1.ISBN, book1);
_redisClient.HSet("books", book2.ISBN, book2);
_redisClient.Expire("books", 3600);
var result = _redisClient.HGet("books", book2.ISBN);
return Ok(result);
}
}
TestRedisString接口的测试结果如下:
TestRedisHash接口的测试结果如下:
FreeRedis的所有方法名与 redis-cli 保持一致,所以使用起来非常方便。大家可以参照考Redis中文网进行进一步学习和尝试。
本次对ASP.NET Core中使用Redis进行了一个入门级的安装及案例演示。如果本文对你有帮助的话,请点赞+评论+关注,或者转发给需要的朋友。