1--依赖
<!-- redis依赖包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
2--账号配置
#配置springCache的实现为redis
cache:
type: redis
#redis缓存配置
redis:
host: ip
port: 端口
password: 账号
timeout: 最大超时时间
pool:
max-wait: -1
max-idle: 10
min-idle: 0
3--配置消息订阅与发布及Redis过期时间
@Configuration
public class RedisCacheManagerConfig {
/**
* Redis配置消息订阅与发布
*监听了两个类,第一个为微信登录或者绑定微信的类,第二个为用户和管理员之间的聊天
*/
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory,
MessageListenerAdapter listenerAdapter1,
MessageListenerAdapter listenerAdapter2) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
container.addMessageListener(listenerAdapter1, new PatternTopic("频道1"));
container.addMessageListener(listenerAdapter2, new PatternTopic("频道2"));
return container;
}
//频道一 方法接受的函数为你的频道类,return 为你的频道类和具体方法
@Bean
MessageListenerAdapter listenerAdapter1(SendSmsUtil receiver) {
return new MessageListenerAdapter(receiver, "receiveMessage");
}
//例子2
@Bean
MessageListenerAdapter listenerAdapter2(SendSmsUtil receiver) {
return new MessageListenerAdapter(receiver, "receiveMessageChat");
}
@Bean
StringRedisTemplate template(RedisConnectionFactory connectionFactory) {
return new StringRedisTemplate(connectionFactory);
}
/**
* 以【类名+方法名+参数】为缓存的key值
*
* @return
*/
@Bean
public KeyGenerator keyGenerator() {
return (target, method, params) -> {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(".");
sb.append(method.getName());
for (Object obj : params) {
sb.append("#");
sb.append(obj == null ? "" : obj.toString());
}
return sb.toString();
};
}
/**
* @Description: 配置Redis过期时间,单位:毫秒
* @Date 11:38 2021/10/5
*/
@Bean
@Primary
publ