StackExchange.Redis 用于 C# (.NET):完整指南及示例
\n\n1. 这是什么以及为什么需要它
\n\nStackExchange.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 和复制。
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 指令:
\nusing StackExchange.Redis;\n\n\n3. 快速入门——最小工作示例
\n\n以下是一个最小示例,它连接到本地 Redis 服务器,写入一个字符串并读取回来:
\n\nusing 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 容器中的单例)。不要为每个请求创建新的多路复用器!
4. 主要方法/函数/类
\n\n4.1. ConnectionMultiplexer.Connect()
\n签名: public static ConnectionMultiplexer Connect(string configuration)
功能: 创建并返回一个新的 ConnectionMultiplexer 实例,该实例管理所有到 Redis 的连接。接受配置字符串(地址、端口、密码、超时等)。
示例:
\nvar redis = ConnectionMultiplexer.Connect("myredisserver.com:6379,password=secret,connectTimeout=5000");\n\n\n4.2. IDatabase.StringSet()
\n签名: bool StringSet(RedisKey key, RedisValue value, TimeSpan? expiry = null, When when = When.Always)
功能: 为指定的键设置值。可以接受可选的过期时间(expiry)和设置条件(仅当键存在、不存在等)。
\n示例:
\n
图书馆中也有
推荐