这篇说一下通过集成KeyExpirationEventMessageListener类实现redis失效监听事件。
首先还是SpringBoot和 Redis的集成,不会的自行百度吧。
步骤:
- 首先加入依赖
import java.nio.charset.StandardCharsets;
@Component
public class KeyExpiredListener extends KeyExpirationEventMessageListener {
@Autowired
public RedisTemplate<String,String> redisTemplate;
public KeyExpiredListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
@Override
public void onMessage(Message message, byte[] bytes) {
String key = new String(message.getBody(), StandardCharsets.UTF_8);
String myKey = redisTemplate.opsForValue().get("myKey");
System.out.println(myKey);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
创建一个配置类RedisListenerConfig
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
@Configuration
public class RedisListenerConfig {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
这样就搞定了,下面写一个Controller测试一下:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
@RestController
public class TestController {
@Autowired
public RedisTemplate<String,String> redisTemplate;
@RequestMapping(value = "/redisTest", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
@ResponseBody
public Map<String,Object> redisTest(){
redisTemplate.opsForValue().set("myKey", "myValue",100, TimeUnit.SECONDS);
String myKey = redisTemplate.opsForValue().get("myKey");
System.out.println(myKey);
Map<String,Object> resultMap = new HashMap<String,Object>();
resultMap.put("myKey",myKey);
return resultMap;
}
}
————————————————
版权声明:本文为CSDN博主「oeSeven」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/oeSeven/article/details/106359816