β‘οΈ νλ‘μ νΈ μ 보
π νλ‘μ νΈ λ° κΈ°λ₯ μκ°
Redisλ₯Ό νμ©ν κ΅μ€ μν΅ νλ«νΌ
νκΈ λ΄ μΉκ΅¬λ€κ³Ό ν¨κ» μν΅ν μ μλ νλ«νΌ, Claksion μ
λλ€.
π¬ μΉκ΅¬λ€μ μ μ νν©μ μ€μκ°μΌλ‘ νμΈνκ³ , λ¨μ²΄ μ±ν
λ°©μΌλ‘ μν΅ν μ μμ΅λλ€.
πΊ λΉλ²νκ² μ§ννλ κ΅μ€μ μ리 λ°°μΉλ₯Ό μΉμμ λΉ λ₯΄κ³ κ°νΈνκ² μ ν μλ μμ΅λλ€.
β
νκΈ λ΄ ν¬ννκ³ μΆμ κ²μ΄ μλ€λ©΄, ν¬νλ₯Ό μ¬λ € κ²°κ³Όλ₯Ό νμΈν΄λ³΄μΈμ! μ΅λͺ
λ κ°λ₯ν©λλ€.
β νμκ°μ
λ° μμ
λ‘κ·ΈμΈ
νμκ°μ
μμ
λ‘κ·ΈμΈ μ, λ±λ‘λμ§ μμ κ³μ μΌ κ²½μ° νμκ°μ
μ μ°¨κ° μ§νλ©λλ€.
μΉ΄μΉ΄μ€ λ‘κ·ΈμΈ
λ€μ΄λ² λ‘κ·ΈμΈ
μΉ΄μΉ΄μ€ μμ
λ‘κ·ΈμΈμ΄ κ°λ₯ν©λλ€.
λ€μ΄λ² μμ
λ‘κ·ΈμΈμ΄ κ°λ₯ν©λλ€.
β μ€μκ° μ μ μ μ 리μ€νΈ
μ€μκ° μ μ μ μ 리μ€νΈ
κ°μ νκΈ λ΄ μΉκ΅¬λ€μ μ μ νν©μ΄ μ€μκ°μΌλ‘ λ°μλ©λλ€. π point. 'ν©μ€λ³΅' λ‘κ·ΈμΈ μ ACTIVE, λ‘κ·Έμμ μ INACTIVEλ‘ μ¦κ° λ³κ²½λ©λλ€.
β μ μ°©μ μ리 μ ν
B2 μ리 μ ν [μ μ 1 : β
μ±κ³΅]
B2 μ리 μ ν [μ μ 2 : βμ€ν¨]
λΉ μ리λ₯Ό λμμ μ νν κ²½μ°, λ°λ¦¬μ΄ λ¨μλ‘ λ 빨리 μ νν μ μ κ° μ±κ³΅ν©λλ€.
β μ μ°©μ μ리 μ ν κ²°κ³Ό
μ리 μ ν κ²°κ³Ό νλ©΄
μ°Έκ³
λ€λμ μμ² λ°μ μ νΈλν½ μ²λ¦¬ κ°λ₯
μ리λ₯Ό ν΄λ¦νλ©΄, ν΄λΉ μ리λ₯Ό μ νν μ μ 리μ€νΈκ° μ‘°νλ©λλ€.
λ§μ μΈμμ΄ μμ²ν κ²½μ°, λ°λ¦¬λ¨μμ΄λ‘ μ°μ μμκ° κ²°μ λ©λλ€.
β μ리 λ°°μΉλ μ΄κΈ°ν
μ리 λ°°μΉλ μ΄κΈ°ν [μ μλ : β
κ°λ₯]
μ리 λ°°μΉλ μ΄κΈ°ν [νμ : βλΆκ°λ₯]
μ μλλ§ μ리 λ°°μΉλ μ΄κΈ°νκ° κ°λ₯νλ©°, κΈ°μ‘΄μ μ리 μ£ΌμΈμ΄ λͺ¨λ μ΄κΈ°νλ©λλ€.
νμμ μ리 λ°°μΉλ μ΄κΈ°νκ° λΆκ°λ₯ ν©λλ€.
λ¨μ²΄ μ±ν
[μ μ 1]
λ¨μ²΄ μ±ν
[μ μ 2]
ν¬ν μμ±
μ λͺ©, νλͺ©, μ΅λͺ
μ 무, λ§κ°μΌ λ±μ μ€μ νμ¬ ν¬νλ₯Ό μμ±ν μ μμ΅λλ€.
ν¬ν [μ μ 1]
ν¬ν [μ μ 2]
ν¬ν ν μ€μκ° ν¬ν νν©μ νμΈν μ μμ΅λλ€.
π§ κ΅μ€ μ νμν λ€μν μν΅μ Redisμ μ₯μ μ νμ©νλ©° νꡬ
Redisμ Sorted Set κ³Ό AOPμ Aroundλ₯Ό νμ©ν΄ λΆνλ₯Ό μ€μΈ 'μ μ°©μ μ리μ ν'κΈ°λ₯μ κ°λ°νλ€.
Redisμ Pub/Sub ν¨ν΄ κ³Ό Socket μ νμ©ν΄ 'μ€μκ° μ±ν
'κΈ°λ₯μ κ°λ°νλ€.
Redisλ₯Ό Session Storageλ‘ μ¬μ© ν¨μΌλ‘μ¨ λΉ λ₯Έ μλ΅μλμ μ₯μ μ μ·¨νκ³ , νμ¬ μλΉμ€μ λ‘κ·ΈμΈλΌ μλ ν΄λΌμ΄μΈνΈ μ 보λ₯Ό μΆλ ₯νλ€.
μΆκ°μμ μ
λλ€.
νμΌνΈλ¦¬
π¦
ββ src
ββ main
β ββ java
β β ββ com
β β ββ claksion
β β ββ ClaksionApplication.java
β β ββ ServletInitializer.java
β β ββ app
β β β ββ data
β β β β ββ dto
β β β β β ββ ClassMate.java
β β β β β ββ LoginUser.java
β β β β β ββ OauthType.java
β β β β β ββ SeatUser.java
β β β β β ββ UserInfo.java
β β β β β ββ enums
β β β β β β ββ MessageType.java
β β β β β ββ msg
β β β β β β ββ AdminMsg.java
β β β β β β ββ ChatRoom.java
β β β β β β ββ Msg.java
β β β β β ββ request
β β β β β β ββ ChatMessageRequest.java
β β β β β β ββ SelectSeatRequest.java
β β β β β β ββ UpdateSeatUserRequest.java
β β β β β ββ response
β β β β β ββ GetChatMessageResponse.java
β β β β β ββ GetSeatAndUserResponse.java
β β β β ββ entity
β β β β ββ BaseEntity.java
β β β β ββ ClassroomEntity.java
β β β β ββ PollContentEntity.java
β β β β ββ PollEntity.java
β β β β ββ SeatEntity.java
β β β β ββ UserEntity.java
β β β β ββ UserType.java
β β β ββ frame
β β β β ββ BaseRepository.java
β β β β ββ BaseService.java
β β β ββ repository
β β β β ββ ClassroomRepository.java
β β β β ββ LoginUserRepository.java
β β β β ββ PollContentRepository.java
β β β β ββ PollRepository.java
β β β β ββ SeatRepository.java
β β β β ββ UserRepository.java
β β β ββ service
β β β ββ ClassroomService.java
β β β ββ PollContentService.java
β β β ββ PollService.java
β β β ββ RankingService.java
β β β ββ RedisMessageSubscriber.java
β β β ββ SeatSelectService.java
β β β ββ SeatService.java
β β β ββ UserService.java
β β β ββ WebSocketHandler.java
β β β ββ aop
β β β β ββ AroundValidSeatOnRedis.java
β β β β ββ SeatValidAop.java
β β β ββ chat
β β β β ββ ChatRoomRepository.java
β β β β ββ MessageService.java
β β β β ββ RedisMessageStorage.java
β β β β ββ RedisPublisher.java
β β β β ββ RedisService.java
β β β β ββ RedisSubscriber.java
β β β ββ oauth
β β β ββ KakaoService.java
β β β ββ NaverService.java
β β ββ config
β β β ββ JasyptConfig.java
β β β ββ RedisConfig.java
β β β ββ SecurityConfig.java
β β β ββ StomWebSocketConfig.java
β β ββ controller
β β ββ ChatController.java
β β ββ ChatRoomController.java
β β ββ MainController.java
β β ββ MessageController.java
β β ββ PollController.java
β β ββ RedisController.java
β β ββ SeatController.java
β β ββ SeatRestController.java
β β ββ UserController.java
β β ββ UserRestController.java
β ββ resources
β β ββ application-aws.yml
β β ββ application-dev.yml
β β ββ application.yml
β β ββ log4jdbc.log4j2
β β ββ logback.properties
β β ββ mapper
β β β ββ classroommapper.xml
β β β ββ pollcontentmapper.xml
β β β ββ pollmapper.xml
β β β ββ seatmapper.xml
β β β ββ usermapper.xml
β ββ webapp
β ββ views
β ββ chat.jsp
β ββ chat
β β ββ room.jsp
β β ββ roomdetail.jsp
β ββ chatTest.jsp
β ββ home.jsp
β ββ index.jsp
β ββ login.jsp
β ββ loginother.jsp
β ββ poll_creation.jsp
β ββ poll_final_result.jsp
β ββ poll_form.jsp
β ββ poll_list.jsp
β ββ poll_result.jsp
β ββ register.jsp
β ββ reservation.jsp
β ββ seat.jsp
β ββ seat_result.jsp
β ββ seat_select.jsp
π¦Έπ»β νμ λ° μν
κΉνμ
νμν¬
ν©νλ¦Ό νμ₯
Redis ν¬ν μμ λ° ν¬ν μ μ κ΄λ¦¬ Redis, SSE μ€μκ° ν¬ν νν© ν¬ν μμ±, μ°Έμ¬, μ€μκ°/μ΅μ’
κ²°κ³Ό
Websocket, Stomp, Redis Pub/Sub μ€μκ° μ±ν
ꡬν Redis μΈμ
κ΄λ¦¬
μμ
λ‘κ·ΈμΈ λ° Redis μΈμ
κ΄λ¦¬ Redis, SSE μ€μκ° μ μ μ μ νν© Redis μ리 μ μ°©μ μ ν λ° κ²°κ³Ό νμΈ