redis过期事件监听
1、redis配置文件修改(redis.windows.conf与 redis.windows-service.conf都要修改)
notify-keyspace-events Ex
2、添加redis配置文件,订阅过期事件消息
keyevent@1:expired 其中1代表操作redis中的db1,不要使用redis配置文件中的推荐内容
@Configuration
public class RedisConfig {
@Autowired
private MessageExpireListener messageListener;
@Autowired
private RedisTemplate redisTemplate;
@Bean
RedisMessageListenerContainer container(MessageListenerAdapter listenerAdapter) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(redisTemplate.getConnectionFactory());
/**
* keyevent事件,事件以__keyevent@<db>__为前缀进行发布
* db为redis第几个库 db0 db1 db2...
*/
container.addMessageListener(listenerAdapter, new PatternTopic("__keyevent@1__:expired"));
return container;
}
@Bean
MessageListenerAdapter listenerAdapter() {
return new MessageListenerAdapter(messageListener);
}
}
3、添加监听类
@Service
public class MessageExpireListener implements MessageListener {
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private IUserService userService;
@Autowired
private ILoginService loginService;
@Override
public void onMessage(Message message, byte[] bytes) {
byte[] body = message.getBody();
}
}
4、添加redis内容并设置过期时间
redisTemplate.opsForValue().set(successUser, loginResp.getToken(), 24, TimeUnit.HOURS);
参考文档:
浙公网安备 33010602011771号