127.0.0.1:6379> keys *
1) "spring:session:expirations:1578227700000"
2) "spring:session:sessions:5eddb9a3-5b1e-4bdd-a289-394b6d42388e"
3) "spring:session:sessions:expires:5eddb9a3-5b1e-4bdd-a289-394b6d42388e"
共同點:3個key都是以spring:session:開頭的,代表了SpringSession的redis數據。
“spring:session:sessions:5eddb9a3-5b1e-4bdd-a289-394b6d42388e”
127.0.0.1:6379> type "spring:session:sessions:5eddb9a3-5b1e-4bdd-a289-394b6d42388e"
hash
127.0.0.1:6379> hgetall “spring:session:sessions:5eddb9a3-5b1e-4bdd-a289-394b6d42388e”
//失效時間 100分鐘
// sesson的屬性,存儲了user對象
3) “sessionAttr:5eddb9a3-5b1e-4bdd-a289-394b6d42388e”
4) “\xac\xed\x00\x05sr\x00\x1ecom.agan.redis.controller.User\x16”_m\x1b\xa0W\x7f\x02\x00\x03I\x00\x02idL\x00\bpasswordt\x00\x12Ljava/lang/String;L\x00\busernameq\x00\x00\x01xp\x00\x00\x00\x01t\x00\x05agan1q\x00\x00\x03"
// session的創建時間
5) “creationTime”
6) “\xac\xed\x00\x05sr\x00\x0ejava.lang.Long;\x8b\xe4\x90\xcc\x8f#\xdf\x02\x00\x01J\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\x00\x00\x01ouW<K”
//最后的訪問時間
7) “lastAccessedTime”
8) “\xac\xed\x00\x05sr\x00\x0ejava.lang.Long;\x8b\xe4\x90\xcc\x8f#\xdf\x02\x00\x01J\x00\x05valuexr\x00\x10java.lang.Number\x86\xac\x95\x1d\x0b\x94\xe0\x8b\x02\x00\x00xp\x00\x00\x01ouW<L”
對于過期數據,一般有三種刪除策略:
為了實現 session 過期的及時性,spring session 采用了定時刪除+惰性刪除的策略。
“spring:session:expirations:1578227700000”
127.0.0.1:6379> type "spring:session:expirations:1578228240000"
set
127.0.0.1:6379> smembers "spring:session:expirations:1578228240000"
1) "\xac\xed\x00\x05t\x00,expires:5eddb9a3-5b1e-4bdd-a289-394b6d42388e"
springsession 定時(1分鐘)輪詢,刪除spring:session:expirations:[?] 的過期members
例如:spring:session:expirations:1578228240000 的1578228240000=2020-01-05 20:44:00:000 即在2020-01-05 20:44:00:000過期。
springsesion 定時檢測超過2020-01-05 20:44:00:000 就刪除spring:session:expirations:1578228240000的members的值
sessionId=5eddb9a3-5b1e-4bdd-a289-394b6d42388e
即刪除
1) "spring:session:expirations:1578228240000"
2) "spring:session:sessions:5eddb9a3-5b1e-4bdd-a289-394b6d42388e"
3) "spring:session:sessions:expires:5eddb9a3-5b1e-4bdd-a289-394b6d42388e"
spring:session:sessions:expires:5eddb9a3-5b1e-4bdd-a289-394b6d42388e
127.0.0.1:6379> type spring:session:sessions:expires:5eddb9a3-5b1e-4bdd-a289-394b6d42388e
string
127.0.0.1:6379> get spring:session:sessions:expires:5eddb9a3-5b1e-4bdd-a289-394b6d42388e
""
127.0.0.1:6379> ttl spring:session:sessions:expires:5eddb9a3-5b1e-4bdd-a289-394b6d42388e
(integer) 4719
訪問 spring:session:sessions:expires:5eddb9a3-5b1e-4bdd-a289-394b6d42388e的時候,判斷key是否過期,過期則刪除,否則返回改進的值。
例如 訪問spring:session:sessions:expires:5eddb9a3-5b1e-4bdd-a289-394b6d42388e的時候
判斷 ttl spring:session:sessions:expires:5eddb9a3-5b1e-4bdd-a289-394b6d42388e是否過期,過期就直接刪除
1) "spring:session:expirations:1578228240000"
2) "spring:session:sessions:5eddb9a3-5b1e-4bdd-a289-394b6d42388e"
3) "spring:session:sessions:expires:5eddb9a3-5b1e-4bdd-a289-394b6d42388e"
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态