全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

c# 如何操作 redis

首选 StackExchange.Redis 客户端,需全局复用单例 ConnectionMultiplexer 实例连接 Redis;StringSet/StringGet 仅操作 RedisValue,存对象须手动序列化;Hash/List/Set 应按语义使用对应 API;常见异常多因连接管理不当。

用 C# 操作 Redis,首选 StackExchange.Redis —— 它是目前 .NET 生态中事实标准、免费、线程安全、支持连接池和集群的成熟客户端。

怎么连上 Redis?ConnectionMultiplexer 是关键

ConnectionMultiplexer 不是“每次操作都新建连接”,而是长生命周期的单例连接管理器。它自动复用 TCP 连接、重连失败节点、处理多数据库切换。错误做法是每次 new ConnectionMultiplexer.Connect(...),这会导致连接泄漏和性能暴跌。

  • 必须全局复用一个 ConnectionMultiplexer 实例(推荐 static readonly 或 DI 注册为 Singleton)
  • 连接字符串支持多种格式:"localhost:6379""192.168.3.42:6500,password=123456,defaultDatabase=2""server1:6379,server2:6379,allowAdmin=true"
  • 首次调用 .Connect() 会阻塞直到连接就绪;建议加超时或用 .ConnectAsync() 避免启动卡死
using StackExchange.Redis;

public static class RedisHelper { private static readonly ConnectionMultiplexer _multiplexer = ConnectionMultiplexer.Connect("localhost:6379"); public static IDatabase Db => _multiplexer.GetDatabase(); }

StringSet/StringGet 为什么有时返回空?注意类型和序列化

IDatabase.StringSet()IDatabase.StringGet() 只操作原始 RedisValue,不是自动 JSON 序列化的“万能存取”。传入 string 没问题,但传 DateTimeint 或对象会隐式转成字符串(如 DateTime.Now.ToString()),读出来仍是字符串,不会自动反序列化。

  • 若需存对象,必须手动序列化:db.StringSet("user:1", JsonConvert.SerializeObject(user))
  • 读取后要手动反序列化:JsonConvert.DeserializeObject(db.StringGet("user:1"))
  • 不要依赖 StringGet() —— 这个泛型方法只对基础类型(intboolDateTime)做简单解析,且失败时静默返回默认值,极易埋坑
  • 过期时间用 TimeSpan:例如 db.StringSet("token", "abc", TimeSpan.FromMinutes(30))

Hash、List、Set 等结构怎么用?别直接拼 key 名

Redis 的数据结构操作不是“模拟 SQL”,而是按语义使用对应 API。比如用户信息用 Hash 存,就该用 HashSet/HashGetAll,而不是把整个对象塞进 StringSet

  • 哈希表(Hash)适合实体字段拆存:db.HashSet("user:1001", new HashEntry[] { new("name", "Alice"), new("age", "28") })
  • 列表(List)用于队列/栈:db.ListLeftPush("queue:mail", "mail-123") + db.ListRightPop("queue:mail")
  • 集合(Set)去重:db.SetAdd("tags:post:42", "c#", "redis", "c#") → 实际只存两个元素
  • 所有 key 命名建议带业务前缀(如 cache:user:lock:order:),避免冲突,也方便后期 KEYS cache:user:* 扫描清理

常见报错和坑:NullReferenceException / “No connection is available”

绝大多数运行时报错都源于连接管理失当,而非语法错误。

  • NullReferenceException 在调用 db.StringSet 时发生?→ 极大概率是 _multiplexer 初始化失败(密码错、端口不通、防火墙拦截),但你没捕获 Connect 异常,导致返回 null
  • No connection is available to service this operation → 连接已断开且未自动重连(常见于网络抖动或 Redis 重启后),应监听 _multiplexer.ConnectionFailed 事件并记录日志
  • 本地开发用 redis-server.exe 启动时,默认不启用密码、绑定 127.0.0.1、端口 6379;生产环境务必配 requirepassbind,否则 StackExchange.Redis 会因认证失败静默断连

真正难的不是写对一行 StringSet,而是让连接稳如磐石、序列化不丢精度、key 设计能支撑未来删查改——这些细节在压测或上线后才暴露,但补救成本远高于初期想清楚。


# word  # redis  # js  # json  # 防火墙  # 端口  #   # ai  # c#  # .net  # 为什么  # red  # sql  # Static  # String  # mail  # Token  # 字符串  # bool  # int  # 数据结构  # 泛型  # 线程  # 对象  # 事件  # this  # 数据库  # 序列化  # 复用  # 客户端  # 首次  # 它是  # 仍是  # 你没  # 管理器  # 报错 


相关文章: 黑客如何通过漏洞一步步攻陷网站服务器?  ,sp开头的版面叫什么?  外汇网站制作流程,如何在工商银行网站上做外汇买卖?  香港服务器部署网站为何提示未备案?  建站主机选购指南:核心配置与性价比推荐解析  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  如何在服务器上配置二级域名建站?  建站org新手必看:2024最新搭建流程与模板选择技巧  小型网站制作HTML,*游戏网站怎么搭建?  黑客如何利用漏洞与弱口令入侵网站服务器?  如何用y主机助手快速搭建网站?  如何通过云梦建站系统实现SEO快速优化?  建站之星3.0如何解决常见操作问题?  Python lxml的etree和ElementTree有什么区别  装修招标网站设计制作流程,装修招标流程?  如何制作一个表白网站视频,关于勇敢表白的小标题?  建站VPS选购需注意哪些关键参数?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  为什么Go需要go mod文件_Go go mod文件作用说明  武汉网站设计制作公司,武汉有哪些比较大的同城网站或论坛,就是里面都是武汉人的?  网站制作软件有哪些,制图软件有哪些?  如何零基础开发自助建站系统?完整教程解析  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  如何做静态网页,sublimetext3.0制作静态网页?  外贸公司网站制作哪家好,maersk船公司官网?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  建站之星免费模板:自助建站系统与智能响应式一键生成  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  如何构建满足综合性能需求的优质建站方案?  寿县云建站:智能SEO优化与多行业模板快速上线指南  如何快速建站并高效导出源代码?  如何在阿里云购买域名并搭建网站?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  建站之星导航菜单设置与功能模块配置全攻略  广东企业建站网站优化与SEO营销核心策略指南  韩国代理服务器如何选?解析IP设置技巧与跨境访问优化指南  如何选择高效响应式自助建站源码系统?  如何通过远程VPS快速搭建个人网站?  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何在IIS服务器上快速部署高效网站?  html制作网站的步骤有哪些,iapp如何添加网页?  高性价比服务器租赁——企业级配置与24小时运维服务  网页设计与网站制作内容,怎样注册网站?  如何在阿里云通过域名搭建网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。