liujie
2026-09-11 4d15e6b553c448e2e07527e9c06aa4b5f9b099cf
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
27
28
29
30
31
32
33
34
35
36
package com.ruoyi.web.controller.service;
 
 
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.PatternTopic;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
 
import javax.annotation.PostConstruct;
 
/**
 * Redis 过期事件监听配置
 */
@Configuration
public class RedisListenerConfig {
    @Autowired
    private VisitorExpireListener visitorExpireListener;
 
    @Autowired
    private RedisMessageListenerContainer redisMessageListenerContainer;
 
    /**
     * 订阅 Redis 过期事件
     * 监听所有 Key 的过期事件,在 VisitorExpireListener 中过滤
     */
    @PostConstruct
    public void init() {
        // 订阅 __keyevent@0__:expired 频道(0 表示 db0)
        // 注意:需要根据实际使用的数据库索引修改
        redisMessageListenerContainer.addMessageListener(
                visitorExpireListener,
                new PatternTopic("__keyevent@0__:expired")
        );
    }
}