C#怎么操作Redis数据库 C# StackExchange.Redis使用方法

来源:这里教程网 时间:2026-02-21 17:35:47 作者:

用 C# 操作 Redis,最主流、高性能、推荐的方式就是使用 StackExchange.Redis 客户端库。它线程安全、支持连接池、自动重连(需配置)、支持同步/异步操作,是 .NET 生态中 Redis 的事实标准。

安装 StackExchange.Redis

通过 NuGet 安装:

在 Visual Studio 的“包管理器控制台”中运行:
Install-Package StackExchange.Redis
或使用 .NET CLI:
dotnet add package StackExchange.Redis

建立连接与获取数据库实例

StackExchange.Redis 使用

IConnectionMultiplexer
管理连接,它是线程安全的、应全局复用(单例),不要每次操作都新建。

推荐用懒加载或 DI 容器注册为单例 连接字符串示例:
"localhost:6379,abortConnect=false,connectTimeout=5000"
GetDatabase()
返回
IDatabase
实例,用于执行具体命令(默认 db=0)

简单示例:

private static readonly Lazy<ConnectionMultiplexer> LazyConnection = 
    new Lazy<ConnectionMultiplexer>(() => ConnectionMultiplexer.Connect("localhost:6379"));
<p>public static ConnectionMultiplexer Connection => LazyConnection.Value;</p><p>// 获取数据库(可指定 dbIndex)
IDatabase db = Connection.GetDatabase(0);

常用数据类型操作(字符串、哈希、列表、集合等)

所有操作都通过

IDatabase
提供的方法完成,支持同步和异步(推荐异步)。

字符串(String)
await db.StringSetAsync("name", "Alice");

string value = await db.StringGetAsync("name");
哈希(Hash)
await db.HashSetAsync("user:1001", new HashEntry[] { new("name", "Bob"), new("age", "28") });

var values = await db.HashGetAllAsync("user:1001");
列表(List)
await db.ListRightPushAsync("tasks", "login");

string first = await db.ListLeftPopAsync("tasks");
集合(Set)
await db.SetAddAsync("tags", "redis", "csharp");

bool exists = await db.SetContainsAsync("tags", "redis");
有序集合(Sorted Set)
await db.SortedSetAddAsync("leaderboard", new SortedSetEntry("alice", 95.5));

var top3 = await db.SortedSetRangeByRankAsync("leaderboard", 0, 2, Order.Descending);

进阶要点:序列化、异常处理与配置

StackExchange.Redis 默认只支持

byte[]
,存对象需自行序列化(如 JSON);同时注意连接状态和超时配置。

存对象建议用
System.Text.Json
序列化:
await db.StringSetAsync("user:1001", JsonSerializer.Serialize(user));

User u = JsonSerializer.Deserialize<user>(await db.StringGetAsync("user:1001")); </user>
监听连接事件可诊断问题:
Connection.ConnectionFailed += (sender, e) => Console.WriteLine(e.Exception);
关键配置项:
abortConnect=false
(启动失败不抛异常)
connectRetry=3
(重试次数)
keepAlive=60
(保活秒数)
defaultDatabase=0
(默认 DB)

基本上就这些。用好 ConnectionMultiplexer 单例 + 异步 IDatabase 操作 + 合理序列化,就能稳定高效地在 C# 中操作 Redis。

相关推荐