Spring Session Data Redis 中 PRINCIPLE_NAME_INDEX_NAME 的清理問題
問題: Spring Session Data Redis 在宕機(jī)并且 session 過期后才重啟,PRINCIPLE_NAME_INDEX_NAME 不會(huì)自動(dòng)清理。
PRINCIPLE_NAME_INDEX_NAME 不會(huì)自動(dòng)清理的問題有人遇到過,但貌似前提不一樣。結(jié)論應(yīng)該是差不多的: Spring Session Data Redis 管理 index 有點(diǎn)問題。
GitHub 上有一個(gè) issue :
2020 年 open 的,但現(xiàn)在還未 close 。
對 Spring 不太熟,簡單看了下代碼,感覺是依賴 Redis 通知 Spring 來執(zhí)行清理操作。如果是宕機(jī)并 session 過期后才重啟,大概是沒通知。
嘗試使用 Spring Session JDBC ,連接 MariaDB ,并沒有產(chǎn)生類似問題(應(yīng)該是 JDBC 使用 ?Spring 的定時(shí)功能來清理過期數(shù)據(jù),和 Redis 不一樣)。關(guān)系數(shù)據(jù)庫的索引功能貌似在這種情況下比 Redis 好用。
題外話:
Spring Session JDBC 需要?jiǎng)?chuàng)建相關(guān)的表,可用 spring.session.jdbc.initialize-schema = always
自動(dòng)創(chuàng)表(需要權(quán)限);亦或從依賴包中找到 schema-*.sql
,然后手動(dòng)執(zhí)行。
標(biāo)簽: