Redis 客户端 for C# (.NET): StackExchange.Redis — 连接与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Redis 客户端 for C# (.NET): StackExchange.Redis



在现代 .NET 平台开发中,经常需要使用高性能缓存系统和消息代理。最流行的解决方案之一是 Redis——一种基于“键-值”原则运行的内存数据存储。为了从 C# (.NET) 与 Redis 交互,有一个经过验证且功能强大的库 StackExchange.Redis。它由 Stack Exchange 公司(Stack Overflow 的创建者)开发,并支持 Redis 的所有主要功能,包括集群、复制和 Pub/Sub。



什么是 StackExchange.Redis?



StackExchange.Redis 是一个用 C# 编写的高性能、异步 Redis 客户端。该库针对大量并发连接进行了优化,并支持多路复用——一个连接可以无阻塞地服务多个并行请求。这使其成为 .NET Core、.NET 5/6/7/8 和 .NET Framework 上高负载应用程序的理想选择。



安装库



通过 NuGet 包管理器安装 StackExchange.Redis。最简单的方法是使用 Visual Studio 中的包管理器控制台或 dotnet CLI。



dotnet add package StackExchange.Redis


或者通过 NuGet:



Install-Package StackExchange.Redis


成功安装后,项目中会添加对程序集的引用,即可开始使用 Redis。



连接到 Redis 服务器



用于交互的主要类是 ConnectionMultiplexer。它管理 Redis 连接,并自动处理重连、网络错误和副本切换。



创建连接的示例:



using StackExchange.Redis;

class Program{ static async Task Main(string[] args) { // 连接到本地 Redis 的连接字符串 string connectionString = "localhost:6379"; // 创建多路复用器 using var redis = await ConnectionMultiplexer.ConnectAsync(connectionString); // 获取数据库(默认 db=0) IDatabase db = redis.GetDatabase(); // 检查连接 bool isConnected = db.Ping().TotalSeconds < 2; Console.WriteLine($"Connected: {isConnected}"); }}


连接字符串可以包含密码、端口、SSL 参数和其他选项。例如,连接到带密码的远程 Redis 服务器:



"myredis.cloud.com:6380,password=secret123,ssl=true"


基本数据操作



获取 IDatabase 实例后,可以执行所有标准 Redis 操作。



字符串操作



// 写入字符串await db.StringSetAsync("user:1:name", "阿列克谢");

// 读取字符串string name = await db.StringGetAsync("user:1:name");Console.WriteLine(name); // 输出:阿列克谢

// 计数器递增await db.StringIncrementAsync("page:visits", 1);


哈希操作



// 设置哈希字段HashEntry[] userData = {    new HashEntry("name", "玛丽亚"),    new HashEntry("age", 28),    new HashEntry("city", "莫斯科")};await db.HashSetAsync("user:2", userData);

// 获取单个字段string city = await db.HashGetAsync("user:2", "city");Console.WriteLine(city); // 莫斯科

// 获取所有哈希字段var allFields = await db.HashGetAllAsync("user:2");foreach (var field in allFields){ Console.WriteLine($"{field.Name}: {field.Value}");}


列表操作



// 向列表添加元素(左侧)await db.ListLeftPushAsync("notifications", "第一条通知");await db.ListLeftPushAsync("notifications", "第二条通知");

// 获取列表所有元素var

推荐