一尘不染

如何在Redis 2.6.11中使用UNSUBSCRIBE命令

redis

将消息发布到特定频道。

redis 127.0.0.1:6379> PUBLISH channel message
(integer) 0

我使用另一个Redis客户端订阅了该频道。

redis 127.0.0.1:6379> SUBSCRIBE channel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel"
3) (integer) 1

在Redis客户端中,我收到了所有已发布消息。现在,我要取消订阅频道。但是我无法在Redis客户端中输入退订。当我使用Ctrl +
c时,完整的Redis客户端退出。如何在Redis Client中编写退订命令?


阅读 321

收藏
2020-06-20

共1个答案

一尘不染

我不认为您可以在客户端中取消订阅,因为客户端被阻止了。我写了一个ruby脚本来展示如何使用退订。

require 'redis'
r = Redis.new
r.subscribe 'first' do |on|
  on.message do |e, d|
    puts e
    puts d
    r.unsubscribe
  end
end
puts "script was blocked?"

如果删除r.unsubscribe,该脚本将被阻止。并且您可以添加if子句以检查何时取消订阅client.ex:

r.unsubscribe if d == 'leave'
2020-06-20