StackExchange.Redis 用于 C# (.NET):完整指南及示例

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

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

开始课程

StackExchange.Redis 用于 C# (.NET):完整指南及示例

\n\n

1. 这是什么以及为什么需要它

\n\n

StackExchange.Redis 是一个高性能、异步的 Redis 客户端,由 StackOverflow 团队开发。它是 .NET 生态系统中与 Redis 交互的事实标准库。它适用于 .NET Framework 4.6+ 和 .NET Core/.NET 5+。

\n\n

为什么需要它?Redis 是一个内存数据存储,通常用作缓存、消息代理(Pub/Sub)、任务队列或高性能 NoSQL 数据库。StackExchange.Redis 为所有这些场景提供了便捷的 API:管理字符串、哈希、列表、集合、事务、Lua 脚本、数据流等。如果没有这个库,您将不得不编写低级代码来处理套接字和 Redis 协议(RESP)。

\n\n

该库的关键特性是其异步性和多线程能力。它使用 ConnectionMultiplexer——一个单一的、共享的对象,用于所有到 Redis 服务器的连接。这允许高效地使用套接字,并避免创建多个连接。该库完全支持 Redis Cluster、Sentinel 和复制。

\n\n

2. 安装

\n\n

通过 NuGet 包管理器进行安装。在包管理器控制台或 .NET CLI 终端中执行以下任一命令:

\n\n
// 通过 .NET CLI\ndotnet add package StackExchange.Redis\n\n// 通过包管理器控制台\nInstall-Package StackExchange.Redis\n
\n\n

安装后,在您的代码中添加 using 指令:

\n
using StackExchange.Redis;\n
\n\n

3. 快速入门——最小工作示例

\n\n

以下是一个最小示例,它连接到本地 Redis 服务器,写入一个字符串并读取回来:

\n\n
using StackExchange.Redis;\n\n// 创建多路复用器(所有操作的入口点)\n// 将 "localhost:6379" 替换为您的 Redis 服务器地址\nConnectionMultiplexer redis = ConnectionMultiplexer.Connect("localhost:6379");\n\n// 获取数据库(默认为 db 0)\nIDatabase db = redis.GetDatabase();\n\n// 写入值\nbool setResult = db.StringSet("mykey", "Hello, Redis!");\nConsole.WriteLine($"Set result: {setResult}");\n\n// 读取值\nRedisValue value = db.StringGet("mykey");\nConsole.WriteLine($"Get result: {value}");\n\n// 关闭连接(如果使用 using,通常不需要)\nredis.Close();\n
\n\n

重要提示: ConnectionMultiplexer 是一个长生命周期对象。它应该在应用程序的整个生命周期内只创建一次(例如,作为 DI 容器中的单例)。不要为每个请求创建新的多路复用器!

\n\n

4. 主要方法/函数/类

\n\n

4.1. ConnectionMultiplexer.Connect()

\n

签名: public static ConnectionMultiplexer Connect(string configuration)

\n

功能: 创建并返回一个新的 ConnectionMultiplexer 实例,该实例管理所有到 Redis 的连接。接受配置字符串(地址、端口、密码、超时等)。

\n

示例:

\n
var redis = ConnectionMultiplexer.Connect("myredisserver.com:6379,password=secret,connectTimeout=5000");\n
\n\n

4.2. IDatabase.StringSet()

\n

签名: bool StringSet(RedisKey key, RedisValue value, TimeSpan? expiry = null, When when = When.Always)

\n

功能: 为指定的键设置值。可以接受可选的过期时间(expiry)和设置条件(仅当键存在、不存在等)。

\n

示例:

\n

                
    
    

推荐