一、RedisTemplate使用
Java项目中,使用RedisTemplate设置键-值失效时间,redisTemplate.opsForValue.set("key", "value", 10, TimeUnit.Hours);
设置该 键-值得失效时间为10个小时
二、监听该键值对失效
1. 配置redis服务器,修改redis.conf文件
2. 编写监听器
@Component public class Listener { /* * Redis消息监听器容器 * 这个容器加载了RedisConnectionFactory和消息监听器 */ @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory, MessageListenerAdapter listenerAdapter){ RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); container.addMessageListener(listenerAdapter, new PatternTopic("__keyevent@0__:expired")); return container; } /* * 将Receiver注册为一个消息监听器,并指定消息接收的方法(receiveMessage) * 如果不指定消息接收的方法,消息监听器会默认的寻找Receiver中的handleMessage这个方法作为消息接收的方法 */ @Bean MessageListenerAdapter listenerAdapter(Receiver receiver){ return new MessageListenerAdapter(receiver, "receiveMessage"); } /* * Receiver实例 */ @Bean Receiver receiver(CountDownLatch latch){ return new Receiver(latch); } @Bean CountDownLatch latch(){ return new CountDownLatch(1); } /* * Redis Template 用来发送消息 */ @Bean StringRedisTemplate template(RedisConnectionFactory connectionFactory){ return new StringRedisTemplate(connectionFactory); } }
三、编写消息处理器
public class Receiver { private CountDownLatch latch; @Autowired private StringRedisTemplate redisTemplate; @Autowired public Receiver(CountDownLatch latch) { this.latch = latch; } public void receiveMessage(String message) { System.out.println("message: ", message); latch.countDown(); } }