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);

参考文档:

https://blog.csdn.net/qq_37334135/article/details/77717248

https://blog.csdn.net/zpf0918/article/details/55511640

posted @ 2018-11-07 17:38  benl_cs  阅读(1294)  评论(0)    收藏  举报