스프링에서 제공하는 기본 세션


1. HttpSession 은 request를 날린 그 대상만 조작할 수 있는 걸로 알고있는데 맞나요?? 예를들어 HttpSession의 getId 로 sessionID 를 안다고해도 sessionId 로 session을 찾는 방법은 없는걸로 알고 있습니다. 이 사실이 맞나요??

2. 1번이 맞다는 가정하에, 그러면 session 추적해서 session 정보를 바꾸고 싶으면 따로 sessionStore 나  sessionRegistry 같은거라도 만들어서 서버내에 Map<세션아이디, 세션> 형식으로 세션아이디로 세션 추적 가능하게 만들어둬서 세션을 업데이트 하는 방법 사용해도 되는건가요?


3. 만약 로그인 한 유저를 기반으로 session이 생성된다고 한다면, 브라우저 강종하거나, 뭐 다른브라우저에서 또 접속하거나 하면 한 유저에 대해서 여러 sessionId가 생성될 수도 있다고 생각하는데, 그러면 
Map<유저id, 세션id리스트> 이런식으로 또 매핑해서 놔두는 방법 사용해도 될까요?

4. 예상 시나리오는 관리자가 어떤 유저의 필드값을 바꾼다면 db에 적용하고, 바뀐 유저의 id로 Map<유저id, 세션id리스트> 에서 sessionId를 추적하고, 추적된 세션아이디들로 Map<세션아이디, 세션>로 세션을 알아내서 모든 세션에 업데이트를 해주는 이 방법 써도 될까요?


이전에 질문 올렸던 글에서 많은 분들이 인터셉터에서 서비스를 의존받아서 디비를 게속 체크하는 것보다 세션 방식을 하는것이 정배라는 느낌? 으로 댓글을 달아주셔서 대충 세션기반으로 하면 이렇게 하면되나 생각해봤는데 제 생각이 틀린생각인지 궁금합니다.

제가 아직 캐시에 관해서는 제대로 공부를 하지 않아서 redis같은것은 아직 다루지 못합니다 ㅠ

근데 만약에 제 방법이 틀린방법이 아니라고해도,
만약에 유저가 엄청 쏟아져서 저 저장소 map들을 꽉 채워버린다면 |
이 저장공간을 어떤식으로 관리해야할지도 모르겟고 얼마나 저장될지도 모르겟고 하네요...
머 어차피 제가 그런걸 고민할 그런 프로젝트는 아니지만 그런 것도 생각은 해보는데 앞이 깜깜하네요