说明

  • 监听 redis key 过期失效。只能监听到 key 值 ,获取不到 value 值
  • 删除 key 时,不会监听到该事件

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
@Component
@Slf4j
public class RedisKeyExpiredListener extends KeyExpirationEventMessageListener {
// 通过构造函数注入 RedisMessageListenerContainer 给 KeyExpirationEventMessageListener
public RedisKeyExpiredListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}

@Override
protected void doHandleMessage(Message message) {
// 过期的 key
byte[] body = message.getBody();
String key = new String(body);
if(key.startsWith(CommonConstant.PREFIX_USER_TOKEN_APP)) {
String token = key.replace(CommonConstant.PREFIX_USER_TOKEN_APP, "");
String username = JwtUtil.getUsername(token);
log.info("username = {}", username);
} else if(key.startsWith(CommonConstant.PREFIX_USER_TOKEN)) {
String token = key.replace(CommonConstant.PREFIX_USER_TOKEN, "");
String username = JwtUtil.getUsername(token);
log.info("username = {}", username);
}
}
}