C#怎么操作Redis数据库 C# StackExchange.Redis使用方法
发布时间 - 2025-12-27 00:00:00 点击率:次推荐使用 StackExchange.Redis 客户端库操作 Redis,它线程安全、支持连接池与自动重连,应通过单例 ConnectionMultiplexer 管理连接,并用异步 IDatabase 方法操作数据,配合JSON 序列化存取对象。
用 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 LazyLazyConnection = new Lazy (() => ConnectionMultiplexer.Connect("localhost:6379")); public static ConnectionMultiplexer Connection => LazyConnection.Value;
// 获取数据库(可指定 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(await db.StringGetAsync("user:1001")); - 监听连接事件可诊断问题:
Connection.ConnectionFailed += (sender, e) => Console.WriteLine(e.Exception); - 关键配置项:
abortConnect=false(启动失败不抛异常)connectRetry=3(重试次数)keepAlive=60(保活秒数)defaultDatabase=0(默认 DB)
基本上就这些。用好 ConnectionMultiplexer 单例 + 异步 IDatabase 操作 + 合理序列化,就能稳定高效地在 C# 中操作 Redis。
# redis
# js
# json
# 懒加载
# ai
# c#
# .net
# red
# 数据类型
# String
# 字符串
# bool
# 线程
# var
# console
# 对象
# 事件
# 异步
# visual studio
# 数据库
# 序列化
# 客户端
# 进阶
# 连接池
# 就能
# 推荐使用
# 它是
# 管理器
# 高性能
# 用好
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
,南京靠谱的征婚网站?
详解Android——蓝牙技术 带你实现终端间数据传输
如何在万网主机上快速搭建网站?
*服务器网站为何频现安全漏洞?
如何在腾讯云免费申请建站?
javascript中闭包概念与用法深入理解
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
Laravel怎么实现模型属性的自动加密
零服务器AI建站解决方案:快速部署与云端平台低成本实践
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
如何挑选最适合建站的高性能VPS主机?
创业网站制作流程,创业网站可靠吗?
php打包exe后无法访问网络共享_共享权限设置方法【教程】
微信小程序 canvas开发实例及注意事项
Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用
Mybatis 中的insertOrUpdate操作
如何快速打造个性化非模板自助建站?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
深圳网站制作培训,深圳哪些招聘网站比较好?
Windows10怎样连接蓝牙设备_Windows10蓝牙连接步骤【教程】
Laravel N+1查询问题如何解决_Eloquent预加载(Eager Loading)优化数据库查询
Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】
laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法
微信小程序 五星评分(包括半颗星评分)实例代码
Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程
如何将凡科建站内容保存为本地文件?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
Laravel如何生成API文档?(Swagger/OpenAPI教程)
深圳网站制作平台,深圳市做网站好的公司有哪些?
js实现获取鼠标当前的位置
Laravel如何实现模型的全局作用域?(Global Scope示例)
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
js代码实现下拉菜单【推荐】
如何快速搭建自助建站会员专属系统?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法
Laravel如何为API编写文档_Laravel API文档生成与维护方法
详解MySQL数据库的安装与密码配置
长沙做网站要多少钱,长沙国安网络怎么样?
千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】
Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全
如何在阿里云通过域名搭建网站?
Firefox Developer Edition开发者版本入口
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
使用Dockerfile构建java web环境
Laravel事件和监听器如何实现_Laravel Events & Listeners解耦应用的实战教程
使用spring连接及操作mongodb3.0实例
Laravel如何处理文件下载请求?(Response示例)
在线制作视频网站免费,都有哪些好的动漫网站?


JSON 序列化存取对象。