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 密码