StackExchange.Redis StringGetAsync 返回空值

Posted

技术标签:

【中文标题】StackExchange.Redis StringGetAsync 返回空值【英文标题】:StackExchange.Redis StringGetAsync returns null value 【发布时间】:2021-12-26 14:00:28 【问题描述】:

设置

在生产环境中在 Linux 上使用 2 个 Redis 服务器

使用 Sentinel 实现高可用性

StackExchange.Redis Nuget 包版本为 1.2.6

.NET 4.5 Windows 服务使用 Redis 缓存。

windows 服务在负载均衡器下。

申请流程

第一步

第一个请求有一个从客户端到端点的批准请求。生成唯一的事务 ID(有效期为 60 分钟)并存储在 Redis 缓存中,用于下一次修改请求

第 2 步 客户在批准请求后的几分钟内发送修改请求。上一步存储的事务id需要从Redis服务中获取,并附加到修改请求发送到端点。

我们面临的问题是,在修改请求期间,唯一的事务 id 检索失败并返回 null 值。我们使用 StringGetAsync 方法从 Redis 缓存中获取值。它在大多数情况下都有效,但其中一些失败。

这两个步骤可以在场中的任何服务器上执行。 我们有日志来验证在 Redis 服务中设置值是否返回 true。

Redis 日志信息仅限于同步操作。

需要有关如何排除/解决此问题的帮助。

【问题讨论】:

请提供足够的代码,以便其他人更好地理解或重现问题。 【参考方案1】:

感谢您的回复。 进一步调查发现,所有 Redis 服务器中的 Sentinel 服务都处于停止状态。启动哨兵服务解决了这个问题。

【讨论】:

以上是关于StackExchange.Redis StringGetAsync 返回空值的主要内容,如果未能解决你的问题,请参考以下文章

使用 StackExchange.Redis 的 Redis 密码

使用 StackExchange.Redis 的 Redis 键空间通知

扩展 StackExchange.Redis 支持实体

StackExchange.Redis TimeOut

StackExchange.Redis中文使用文档

StackExchange.Redis 命令扩展