【发布时间】:2021-02-06 04:50:00
【问题描述】:
我想将 Redis 连接作为后台任务启动,以便用户无需等待 Redis 连接建立。如果 Redis 连接未建立或 Redis 不可用,则应从源获取数据,而不影响用户。
该应用程序是一个 AWS Lambda Web API 项目。我想避免单个请求中的连接延迟,但我也不想在启动时等待连接来增加冷启动时间。
我正在使用 StackExchange Redis 客户端库。
为了完成这个,我想在后台任务中启动 Redis 连接。
【问题讨论】:
-
这太模糊了——对于什么样的应用程序?
the user need not await for the Redis connection to get established是什么意思?对于桌面应用程序,这意味着 UI 不会冻结。 Web 应用程序在等待时不会冻结。in thread safe manner对您的代码意味着什么?如果您不修改全局状态,则没有风险,假设您的 Redis 库具有异步方法,那么简单的await myClient.ConnectAsync()就可以了 -
这些事情都与线程安全或冻结无关。您要求使用后备缓存。这与线程无关,并且...可能已经通过the distributed caching middleware 至少部分实现了
-
这是XY Problem 的情况。你有一个问题 X(如何使用 Redis 回退到另一个源)并假设 Y 是解决方案(后台线程),所以当事情不工作时,你询问 Y。但在这种情况下 Y 无关与 X
-
@Shaheer ********如果您这样做,您仍然需要等待********。无论如何,发布您的真实代码。
-
没有理由这样做。并不是人们不理解你的问题。你问的是错误的问题。如果您想测试连接在启动时进行。后续连接不会花费那么长时间。如果需要,请添加 Redis 健康检查。如果您怀疑连接会中断,请编写代码,使其回退到数据库或您拥有的任何其他来源。
标签: c# .net-core redis aws-lambda stackexchange.redis