首选 StackExchange.Redis 客户端,需全局复用单例 ConnectionMultiplexer 实例连接 Redis;StringSet/StringGet 仅操作 RedisValue,存对象须手动序列化;Hash/List/Set 应按语义使用对应 API;常见异常多因连接管理不当。
用 C# 操作 Redis,首选 StackExchange.Redis —— 它是目前 .NET 生态中事实标准、免费、线程安全、支持连接池和集群的成熟客户端。
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(); }
IDatabase.StringSet() 和 IDatabase.StringGet() 只操作原始 RedisValue,不是自动 JSON 序列化的“万能存取”。传入 string 没问题,但传 DateTime、int 或对象会隐式转成字符串(如 DateTime.Now.ToString()),读出来仍是字符串,不会自动反序列化。
db.StringSet("user:1", JsonConvert.SerializeObject(user))
JsonConvert.DeserializeObject(db.StringGet("user:1"))
StringGet() —— 这个泛型方法只对基础类型(int、bool、DateTime)做简单解析,且失败时静默返回默认值,极易埋坑TimeSpan:例如 db.StringSet("token", "abc", TimeSpan.FromMinutes(30))
Redis 的数据结构操作不是“模拟 SQL”,而是按语义使用对应 API。比如用户信息用 Hash 存,就该用 HashSet/HashGetAll,而不是把整个对象塞进 StringSet。
db.HashSet("user:1001", new HashEntry[] { new("name", "Alice"), new("age", "28") })
db.ListLeftPush("queue:mail", "mail-123") + db.ListRightPop("queue:mail")
db.SetAdd("tags:post:42", "c#", "redis", "c#") → 实际只存两个元素cache:user:、lock:order:),避免冲突,也方便后期 KEYS cache:user:* 扫描清理绝大多数运行时报错都源于连接管理失当,而非语法错误。
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;生产环境务必配 requirepass 和 bind,否则 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小时内与您取得联系。