建立spring-boot 項目
pom.xml引入依賴:
java
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.cherrish</groupId> <artifactId>demo-redis</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>demo-redis</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
application.properties:
redis
spring.redis.database=4 spring.redis.host=192.168.1.17 spring.redis.port=6379 spring.redis.password=redis
Java代碼:
spring
/*********************************DemoRedisApplication.java*********************************/ package com.cherrish.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class DemoRedisApplication { public static void main(String[] args) { SpringApplication.run(DemoRedisApplication.class, args); } } /*********************************RedisConfig.java*********************************/ package com.cherrish.demo; import com.cherrish.demo.redis.MessageReceiver; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.listener.PatternTopic; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.data.redis.listener.adapter.MessageListenerAdapter; /** * @author cherrish * @time 2018-08-30 14:51 * @name RedisConfig * @desc: */ @Configuration public class RedisConfig { @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter){ RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.addMessageListener(listenerAdapter, new PatternTopic("chat")); return container; } @Bean MessageListenerAdapter listenerAdapter(MessageReceiver receiver){ return new MessageListenerAdapter(receiver, "receiveMessage"); } @Bean StringRedisTemplate stringRedisTemplate(RedisConnectionFactory connectionFactory){ return new StringRedisTemplate(connectionFactory); } } /*********************************MessageReceiver.java*********************************/ package com.cherrish.demo.redis; import org.springframework.stereotype.Component; /** * @author cherrish * @time 2018-08-30 15:05 * @name MessageReceiver * @desc: */ @Component public class MessageReceiver { public void receiveMessage(String message){ System.out.println("receive a message: " + message); } } /*********************************MessageSender.java*********************************/ package com.cherrish.demo.redis; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; import java.util.Date; /** * @author cherrish * @time 2018-08-30 15:01 * @name MessageSender * @desc: */ @EnableScheduling @Component public class MessageSender { @Autowired private StringRedisTemplate stringRedisTemplate; @Scheduled(fixedRate = 2000) public void sendMessage(){ stringRedisTemplate.convertAndSend("chat", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); } }