使用Redis pub / sub使缓存条目无效

时间:2015-06-30 03:24:54

标签: asp.net caching redis publish-subscribe stackexchange.redis

我有一个ASP.NET Web应用程序,它利用Redis(通过非常棒的StackExchange.Redis)作为缓存存储。

我还使用Redis pub / sub在需要刷新这些缓存条目时使其无效(读取:缓存长,根据需要刷新)。但是,我注意到如果发布者写得太快,Web应用程序(订阅者)无法跟上消息,并且与Redis的套接字连接将被阻止,导致无法完成读取(注意:此可能< / em>不是套接字被阻止的原因,但是我在从我的Web应用程序中删除pub / sub后得出了这个结论,并且问题消失了)

旁注:我已将PreserveAsyncOrder选项保留为默认值(true),但我认为我可以将此设为假,因为我不关心消息的顺序?

让您了解这一切是如何工作的,在启动时(仅一次)Web应用程序:

  • 创建与Redis(单个ConnectionMultiplexer)的连接
  • 订阅一系列活动

然后,后台组件将消息发布到Redis(最多每秒1或2),这会导致Web应用程序更新(而不是删除)缓存的条目,例如将项目添加到预先存在的集合中。 / p>

我的问题:

  • 我在这里误用了Redis pub / sub吗? (我应该使用队列吗?或者只是简单地自然地使项目过期?)
  • 如何在Web上下文中使用SubscribeAsync,因为这应该在启动时完成一次,并且启动生命周期通常是静态的?
  • 有人能指出我使用StackExchange.Redis作为ASP.NET Web上下文中的pub / sub系统的示例吗? (也许我在我的代码中做错了什么)

非常感谢任何指导。

谢谢!

0 个答案:

没有答案