- 订阅命令 SUBSCRIBE c1 c2 c1 和 c2是通道名称
- 发布消息 publish c1 'i am is long!!!'
publish c2 'i am is long!!!'
- 订阅的客户端就会收到两条不同通道发出来的消息
- 当redis服务器重启之后 订阅的数据没有通知到的会丢失
- 当redis服务器再次启动后,可以继续监听和发送消息
- 可以订阅和发布 模糊样式的通道
模式匹配订阅
Redis 的Pub/Sub实现支持模式匹配。客户端可以订阅全风格的模式以便接收所有来自能匹配到给定模式的频道的消息。
比如:
PSUBSCRIBE news.*
将接收所有发到news.art.figurative, news.music.jazz等等的消息,所有模式都是有效的,所以支持多通配符。
PUNSUBSCRIBE news.*
springboot redis实现订阅 通知功能
- pow文件依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> - application.properties 增加
#redis spring.redis.host=localhost spring.redis.port=6379 #spring.redis.password= spring.redis.database=1 spring.redis.pool.max-active=8 spring.redis.pool.max-wait=-1 spring.redis.pool.max-idle=500 spring.redis.pool.min-idle=0 spring.redis.timeout=0 -
redis配置
@Bean //相当于xml中的bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); //订阅了一个叫chat 的通道 container.addMessageListener(listenerAdapter, new PatternTopic("chat")); //这个container 可以添加多个 messageListener return container; } /** * 消息监听器适配器,绑定消息处理器,利用反射技术调用消息处理器的业务方法 * @param receiver * @return */ @Bean MessageListenerAdapter listenerAdapter(MessageReceiver receiver) { //这个地方 是给messageListenerAdapter 传入一个消息接受的处理器,利用反射的方法调用“receiveMessage” //也有好几个重载方法,这边默认调用处理器的方法 叫handleMessage 可以自己到源码里面看 return new MessageListenerAdapter(receiver, "receiveMessage"); } /**redis 读取内容的template */ @Bean StringRedisTemplate template(RedisConnectionFactory connectionFactory) { return new StringRedisTemplate(connectionFactory); } -
发送消息
public void sendMessage(){ stringRedisTemplate.convertAndSend("chat",String.valueOf(Math.random())); } -
接收消息
/**接收消息的方法*/ public void receiveMessage(String message){ System.err.println("收到一条消息:"+message); }
960

被折叠的 条评论
为什么被折叠?



