사용자가 특정 환자, 의사 및 시설에 대한 약속을 작성할 수있는 의료용 웹 응용 프로그램을 개발 중입니다. 각 시설에는 N 명의 의사가있을 수 있으며 캘린더에는 의사 당 N 명 예약이 채워지고 각 의사의 사용 가능 여부도 표시됩니다 (예 : 수요일 9 시부 터 12 시까 지, 15 시부 터 15 시까 지 근무하는 의사). 18:00).Spring + Redis + Mysql : 캐시 전략
프런트 엔드 부분에서는 fullcalendar을 사용하고 있으며 백엔드는 Struts2 (컨트롤러) + Spring (종속성 주입) + Hibernate (DAO)를 사용하여 만들어졌습니다.
장래에이 주에서 한 달 또는 두 달로 약속을로드해야하고이보기를 오랫동안 사용할 각 시설에 대해 1 명에서 N 명의 사용자가있을 수 있으므로 Redis을 사용하여 약속 및 사용 가능 여부를 캐시하고 Spring data redis과 Lettuce 클라이언트를 추가했습니다. DAO의 메서드에 대해 @Cacheable
, @CachePut
및 @CacheEvict
주석을 사용하고, 목록과 같은 사용자 동작을 처리하고, redis 데이터와 데이터베이스 데이터 간의 충돌을 피하기 위해 약속을 만들고 업데이트하고 기타 동시성 문제를 해결하는 것이 좋습니다.
내 질문은 :
- 이 올바른 전략인가?
- 시설 + 의사 ID로 약속 된 약속을 캐시하기 위해 맞춤 키 생성기를 구현해야합니까?
패턴은 스프링 캐시 프로그래밍 모델에 맞습니다. 캐싱을 시작하기 전에 성능 테스트를 실행하여 캐싱이 솔루션인지 또는 증상인지 파악해야합니다. 객체가 직렬화 가능해야합니다. JPA 프록시를 캐시하지 않고 데이터 모델 내부의 데이터를 캐시합니다. 핵심 발전기 : 그것은 중요합니다. SpEL 표현식을 지정하여 충돌하지 않는 키를 만들고 해당 키가 맞는지 확인하십시오. – mp911de