草庐IT

Redis 通知

coder 2023-07-18 原文

我正在使用 Redis 作为分布式缓存。我有不同的应用程序,它们只听特定的键。例如: App1 听 App1.* App2 监听 App2.* 等等。

我的应用程序使用以下模式接收通知: App1:“ key *:APP1。” App2: "key*:APP2."

我只需要发送有关设置、删除、过期、驱逐事件的通知,这就是我尝试使用通知键空间事件“AK”的原因。如果对我来说工作正常,但在这种情况下,“AK”配置 redis 开始发送我不需要的额外通知,如“过期”。

所以根据文档http://redis.io/topics/notifications我试图实现自定义属性:

notify-keyspace-events "Ksxe"仅发送已设置、已过期和已驱逐的通知。但实际上在这种情况下我只收到过期的通知..

问题: 1. 为什么我没有收到 set 和 evicted 事件?为什么我只收到过期的事件? 2、有什么办法可以让redis只发送del通知??

我也试过“Ks”但是redis不发送关于设置事件的通知 g$lshzxe 的别名,因此“AKE”字符串表示所有事件。 “Kg$lshzxe”也不能正常工作..

最佳答案

我认为您误解了“s”标志。它与 set 命令无关。它告诉 Redis 只发送更改类型“redis 集”键的命令,例如 sadd 或 Redis 集 类型 过期的键.

因此,在您的示例“Ksxe”中,您指示 Redis 在任何包含 Redis 集 的 key 被驱逐或“过期”时向您发送通知。 “Ks”选项指示 Redis 仅在“set”type 键被更改时向您发送通知,而不是在使用 setstring 命令。要将其翻译成英语,您告诉 Redis“当‘set’类型的键过期或被逐出时告诉我”。

如果您想知道何时使用 set 命令创建或更改 type 字符串的 key ,并为其添加过期时间,设置过期时间会立即删除键,或者被逐出,你需要改为使用“K$xeg”。 “g”很重要,因为它捕获了 expire 命令本身的使用,而“$”表示字符串类型。

另请注意,“g”标志将导致“过期”事件,但过期事件将被标记为“已过期”,使您能够区分两者。如果您不关心在 key 上创建 TTL,则可以省略“g”。

关于Redis 通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39786427/

有关Redis 通知的更多相关文章

  1. ruby-on-rails - Rails 常用字符串(用于通知和错误信息等) - 2

    大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje

  2. ruby-on-rails - 如何在发布新的 Ruby 或 Rails 版本时收到通知? - 2

    有人知道在发布新版本的Ruby和Rails时收到电子邮件的方法吗?他们有邮件列表,RubyonRails有一个推特,但我不想听到那些随之而来的喧嚣,我只想知道什么时候发布新版本,尤其是那些有安全修复的版本。 最佳答案 从therailsblog获取提要.http://weblog.rubyonrails.org/feed/atom.xml 关于ruby-on-rails-如何在发布新的Ruby或Rails版本时收到通知?,我们在StackOverflow上找到一个类似的问题:

  3. ruby - 从 Ruby 连接到适用于 Windows Phone 8 的 Microsoft 推送通知服务 - 2

    我们正在开发一个需要推送通知的WP8应用程序。为了测试它,我们使用CURL命令行运行推送通知POST请求,确保它实际连接,使用客户端SSL证书进行身份验证并发送正确的数据。我们确实知道,当我们收到对设备的推送时,这项工作是有效的。这是我们一直用于测试目的的CURL命令:curl--certclient_cert.pem-v-H"Content-Type:text/xml"-H"X-WindowsPhone-Target:Toast"-H"X-NotificationClass:2"-XPOST-d"MytitleMysubtitle"https://db3.notify.live.ne

  4. ruby - 是否可以在 Unicorn master 完成重启时发送通知? - 2

    我在nginx+unicorn后面运行一系列Rails/Sinatra应用程序,零停机部署。我喜欢这个设置,但Unicorn需要一段时间才能完成重新启动,所以我想在完成时发送某种通知。我能在Unicorn文档中找到的唯一回调与workerfork相关,但我认为这些回调对此不起作用。这是我从赏金中寻找的东西:老unicorn主人启动新主人,然后新主人开始它的worker,然后旧主人停止它的worker并让新主人接管。我想在交接完成后执行一些ruby​​代码。理想情况下,我不想为此实现任何复杂的流程监控。如果这是唯一的方法,那就这样吧。但在走那条路之前,我正在寻找更简单的选择。

  5. ruby-on-rails - Rails/Bootstrap - Flash 通知 :success is now red and not green? - 2

    我一直试图在这里寻找答案,但我找不到任何有用的东西。我已经对我的Rails应用程序实现了:success和:dangerflash通知。它工作得很好,即:success是绿色的,:danger是红色的,有一个关闭按钮等等,但是自从添加了一些邮件文件后,我的:success现在显示为红色?application.html.erb摘录:×contact_mailer.rbclassContactMailercontacts_controller.rbclassContactsController还有,contact_email.html.erbNewMessagefromHoo

  6. ruby-on-rails - 带有 redirect_to 的 Flash 通知在 rails 中被破坏 - 2

    我已更新到Rails2.3.10、Rack1.2.1,现在我的所有即时消息都没有显示。我发现在重定向期间,通知是这样传递的redirect_to(@user,:notice=>"Sorrytherewasanerror")在我看来闪存哈希是空的!map:ActionController::Flash::FlashHash{}但是您可以在Controller中看到该消息。是什么原因?session{:home_zip=>"94108",:session_id=>"xxx",:flash=>{:notice=>"Sorrytherewasanerror"},:user_credential

  7. ruby - 如何在 selenium webdriver - ruby​​ 中自动化桌面通知 - 2

    我正在尝试使用ruby​​中的seleniumwebdriver从gmail桌面通知中获取数据 最佳答案 开箱即用的想法,用Selenium截屏并用OCR处理图像?https://github.com/suyesh/ocr_space我假设Selenium只允许您与页面数据交互。 关于ruby-如何在seleniumwebdriver-ruby​​中自动化桌面通知,我们在StackOverflow上找到一个类似的问题: https://stackoverflo

  8. ruby-on-rails - 获取错误 Apple 推送通知 OpenSSL::SSL::SSLError - 2

    OpenSSL::SSL::SSLError(SSL_connectSYSCALLreturned=5errno=0state=SSLv3readserversessionticketA):为苹果推送通知Houstongem集成库。自上两个月以来,它运行顺利,但现在在应用程序中出现错误。尝试多种解决方案来解决问题。也尝试使用新的证书pem文件,但遇到相同的错误..有时它可以工作请帮忙解决问题。 最佳答案 错误严格来说是您使用了错误的APNS证书。它可能已过期,或者它只是一个旧证书的类型(在2015年12月之前创建)。一年前,Appl

  9. ruby-on-rails - Rails 中的 Gmail 推送通知 - 2

    我正在开发一个应用程序,用户可以在其中添加他们的Gmail帐户,我会对他们的电子邮件进行一些分类工作。我想在任何注册帐户收到新电子邮件时收到通知。一个解决方案是通过IMAP不断轮询帐户并保存我获取的最后一封电子邮件日期以检查是否有新邮件,但这有很多开销。知道如何监控Gmail并在收到新电子邮件时收到通知并将其与Rails应用集成吗?例如,是否有扩展程序可以执行此操作并将发布请求发送到我的Rails应用程序? 最佳答案 我很确定IMAP是这里唯一的答案。您可能想看看IDLE是否有效——我读过相互矛盾的答案。如果是这样,它比轮询响应更快

  10. ruby-on-rails - Rails 中的通知系统 - 2

    有谁知道任何好的RoR通知插件/gem。我需要以某种方式存储事件并在他/她离线时将它们显示给用户,或者在在线时以一种很好的方式将它们呈现给用户。这类似于Facebook通知,用户收到新消息、评论、点赞等通知。谢谢 最佳答案 有一个名为Mailboxer的gem具有相似的功能。 关于ruby-on-rails-Rails中的通知系统,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/6

随机推荐