存储数据, 设置数据超时时间
public void sendMsg(){
stringRedisTemplate.opsForValue().set("test1", "abc");
stringRedisTemplate.expire("test1", 30, TimeUnit.SECONDS);
}
自定义事件监听器
package com.example.demo.conf;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.connection.MessageListener;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
/**
* @program: demo
* @description:
* @author: zcz
* @create: 2019-02-15 15:39
**/
@Component
public class RedisMessageListener implements MessageListener {
@Autowired
private StringRedisTemplate stringRedisTemplate;
public StringRedisTemplate getStringRedisTemplate() {
return stringRedisTemplate;
}
public void setStringRedisTemplate(StringRedisTemplate stringRedisTemplate) {
this.stringRedisTemplate = stringRedisTemplate;
}
@Override
public void onMessage(Message message, byte[] bytes) {
byte[] body = message.getBody();
String msgBody = (String) stringRedisTemplate.getValueSerializer().deserialize(body);
System.out.println(msgBody);
byte[] channel = message.getChannel();
String msgChannel = (String) stringRedisTemplate.getValueSerializer().deserialize(channel);
System.out.println(msgChannel);
String msgPattern = new String(bytes);
System.out.println(msgPattern);
}
}
创建事件监听器容器, 配置监听类型为__keyevent@*__:expired
@ConditionalOnBean(RedisMessageListener.class)
@Bean
public RedisMessageListenerContainer redisMessageListenerContainer(JedisConnectionFactory factory, RedisMessageListener redisMessageListener) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(factory);
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setPoolSize(10);
scheduler.initialize();
container.setTaskExecutor(scheduler);
List<Topic> topics = new ArrayList<>();
topics.add(new PatternTopic("__keyevent@*__:expired"));
Map<MessageListener, Collection<? extends Topic>> map = new HashMap<>();
map.put(redisMessageListener, topics);
container.setMessageListeners(map);
return container;
}
配置redis.config配置文件发布事件类型
notify-keyspace-events Ex