Spring Session中session的事件監(jiān)聽

前提

Redis版本>2.8

開啟事件通知配置

(默認spring session會自動開啟該配置)
配置文件:notify-keyspace-events Ex
命令行:redis-cli config set notify-keyspace-events Egx

不需要自動開啟該配置的話可以將如下配置加入到容器中

@Bean
public static ConfigureRedisAction configureRedisAction() {
    return ConfigureRedisAction.NO_OP;
}

spring boot 自動注入:RedisHttpSessionConfiguration#setImportMetadata方法會注入RedisHttpSessionConfiguration相關配置
spring session開啟redis事件通知相關類: RedisHttpSessionConfiguration、 ConfigureNotifyKeyspaceEventsAction
spring session自動開啟redis事件通知文檔
RedisSession監(jiān)聽配置

@Configuration
public class RedisHttpSessionListenerConfig {

    /**
     * 監(jiān)聽session創(chuàng)建
     */
    @EventListener
    public void onCreated(SessionCreatedEvent event) {
        String sessionId = event.getSessionId();
        // spring-session提供的session
        Session session = event.getSession();
        System.out.println("創(chuàng)建:" + sessionId);
    }

    /**
     * 監(jiān)聽session刪除
     */
    @EventListener
    public void onDeleted(SessionDeletedEvent event) {
        String sessionId = event.getSessionId();
        // spring-session提供的session
        Session session = event.getSession();
        System.out.println("刪除:" + sessionId);
    }

    /**
     * 監(jiān)聽session過期
     */
    @EventListener
    public void onExpired(SessionExpiredEvent event) {
        String sessionId = event.getSessionId();
        // spring-session提供的session
        Session session = event.getSession();
        System.out.println("過期:" + sessionId);
    }
}

原理

在spring-Session中session的創(chuàng)建、刪除、過期都會接收到redis相關事件的通知
spring-session中接收到相關通知后再由Spring發(fā)布相關ApplicationEvent(SessionCreatedEvent 、SessionDeletedEvent 、SessionExpiredEvent)
由spring-context提供的@EventListener注解即可實現(xiàn)相關事件的監(jiān)聽
Spring Session官方文檔
將Redis消息轉換為Spring的ApplicationEvent實現(xiàn)類:org.springframework.session.data.redis.RedisOperationsSessionRepository
Redis鍵空間通知

Spring-session啟動失敗

Spring-session redis啟動失敗

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容