ํฐ์คํ ๋ฆฌ ๋ทฐ
STEP 13.์ฝ์ํธ ํธ๋ํฝ ์ฒ๋ฆฌ +์บ์ฑ ์ ๋ต (ํฅํด99 ๋ฐฑ์๋ 5๊ธฐ)
dev_0hoon 2024. 7. 31. 22:42๐คท ์ฝ์ํธ ์์ฝ ํ๋ก๊ทธ๋จ
์ผ๋ฐ์ ์ผ๋ก ์ฝ์ํธ๋ฅผ ์์ฝํ ๋์๋ '์ธ๊ธฐ๊ฐ์'์ 'ํฌ'๋ค์ด ๋ชฐ๋ฆฌ๊ฒ ๋๋ฉฐ ํธ๋ํฝ์ด ๋ฐ์ํ๋ค. ๊ณง ์๋ฒ๊ฐ ๋ถํ๋ฅผ ๋ฐ๊ฒ ๋๋ค. ์ ์ ๋ถํ๋ก ํธ๋ํฝ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฐฉ๋ฒ ์ค ์ฌ์ฉ Caching ์ ๋ต์ด ์๋ค.
Caching
๋ฐ์ดํฐ๋ฅผ ์์๋ก ๋ณต์ฌํด๋๋ Storage ๊ณ์ธต์ ์ ๋ถํ๋ก API ์๋ต์ ๋น ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ฌ์ฉ
์ฝ์ํธ ์์ฝํ๋ก๊ทธ๋จ์
- ์ฝ์ํธ ์ผ์ ์กฐํ
- ์ข์ ์กฐํ
- ์ข์ ์์ฝ
- ๊ฒฐ์
์ด 4๊ฐ์ ํต์ฌ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค.
์บ์ฑ์ ๋ณดํต ๋ฉ์๋ ๋จ์๋ก ์์ฑ๋๋ค. ์์ฃผ ๋ณํ๊ฐ ์ผ์ด๋์ง ์๋, ํ์ง๋ง ๋ง์ ์ฌ์ฉ์๋ค์ด ์ฐพ๋ ๋ถ๋ถ์ ์บ์ฑํ๋ ๊ฒ์ด ์ณ๋ค.
๋ง์ฝ ์ฌ์ฉ์๊ฐ ์์ฃผ ์ฐพ๋ ์ ๋ณด๋ฅผ ์บ์ฑํ๋ฉด, ์๋ก ๋ค๋ฅธ ์ ๋ณด๋ฅผ ๋ณด๋ฉฐ ํผ๋์ด ์ผ์ด๋ ๊ฒ์ด๋ค.
์ด๊ณณ์์ Caching์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๊ฐ๋ฅํ ์กฐํ ๋ถ๋ถ์ ๋ณผ ์ ์๋ค.
- ์ฝ์ํธ ์ผ์ ์กฐํ : ์ฝ์ํธ์ ์ค์ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ๋์ง ์๋ ํ ์ ๋ณด๊ฐ ๋ฐ๋์ง ์๋๋ค. ์์ฝ์ ์ํด ์ฌ์ฉ์๋ค์ด ์์ฃผ ์ฐพ๋๋ค.
- > ์บ์ฑ ์ฌ์ฉ ์ ํฉ
- ์ข์ ์กฐํ: ํฐ์ผํ ์ด ์์๋๋ฉด ์ฌ์ฉ์๋ค์ด ์์ฝ์ ํ ๋๋ง๋ค ์ ๋ณด๊ฐ ์์ฃผ ๋ฐ๋๋ค.
- > ์บ์ฑ ์ฌ์ฉ ๋ถ์ ํฉ
Cache ์ฌ์ฉ ๋ฐฉ๋ฒ (spring boot ์์)
@Cacheable
@Cacheable("bestSeller")
public Book getBestSeller(String bookNo) {
}
// ํ์ง๋ง ์ฌ๋ฌ ๊ฐ์ ํ๋ผ๋ฏธํฐ ์ค์์๋ 1๊ฐ์ ํค ๊ฐ์ผ๋ก ์ง์ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ๋ ์๋ค.
// ๊ทธ๋ฌํ ๊ฒฝ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ด key ๊ฐ์ ๋ณ๋๋ก ์ง์ ํด์ฃผ๋ฉด ๋๋ค.
@Cacheable(value = "bestSeller", key = "#bookNo")
public Book getBestSeller(String bookNo, User user, Date dateTime) {
}
// key๊ฐ์ ์ง์ ์๋ SpEL์ด ์ฌ์ฉ๋๋ค.
// ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ง์ฝ ํ๋ผ๋ฏธํฐ๊ฐ ๊ฐ์ฒด๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ์ ์์ฑ์ ์ ๊ทผํ๋ฉด ๋๋ค.
@Cacheable(value = "bestSeller", key = "#book.bookNo")
public Book getBestSeller(Book book, User user, Date dateTime) {
}
//key๊ฐ์ ์ง์ ์๋ SpEL์ด ์ฌ์ฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ง์ฝ ํ๋ผ๋ฏธํฐ๊ฐ ๊ฐ์ฒด๋ผ๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ์ ์์ฑ์ ์ ๊ทผํ๋ฉด ๋๋ค.
@Cacheable(value = "bestSeller", key = "#book.bookNo")
public Book getBestSeller(Book book, User user, Date dateTime) {
}
//๋ง์ฝ ํ๋ผ๋ฏธํฐ ๊ฐ์ด ํน์ ์กฐ๊ฑด์ธ ๊ฒฝ์ฐ์๋ง ์บ์๋ฅผ ์ ์ฉํ๊ธฐ๋ฅผ ์ํ๋ค๋ฉด condition์ ์ด์ฉํ๋ฉด ๋๋ค.
@Cacheable(value = "bestSeller", key = "#book.bookNo", condition = "#user.type == 'ADMIN'")
public Book getBestSeller(Book book, User user, Date dateTime) {
}
์ถ์ฒ: https://mangkyu.tistory.com/179 [MangKyu's Diary:ํฐ์คํ ๋ฆฌ]
@Cacheable์ ์บ์๋ฅผ ์ฌ์ฉํ๊ณ ์ถ์ ๋ฉ์๋ ๋จ์๋ก ์์์ ๋ฃ๋๋ค. value๋ ์ด๋ฆ์ด ๋๋ฉฐ ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํ๋ค. ํ์ง๋ง ์บ์๊ฐ ๋ ํ์ ์๋ก์ด ์ ๋ณด๋ก ์์ ์ด ๋๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น?
@CacheEvict
์บ์๋ ์ ์ ํ ์์ ์ ์ ๊ฑฐ๋์ด์ผ ํ๋๋ฐ, ๋ง์ฝ ๊ฐ์ด ๋ฌ๋ผ์ง๋ค๋ฉด ์บ์๋ฅผ ์ ๊ฑฐํด์ผ ํ ๊ฒ์ด๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์๋ชป๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋๋ค. ์บ์๋ฅผ ์ ๊ฑฐํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ ๋ค์์ 2๊ฐ์ง๊ฐ ์๋ค.
- ์ผ์ ํ ์ฃผ๊ธฐ๋ก ์บ์๋ฅผ ์ ๊ฑฐ
- ๊ฐ์ด ๋ณํ ๋ ์บ์๋ฅผ ์ ๊ฑฐ
// @CacheEvict์ ์บ์ ์ด๋ฆ์ ๋ฃ์ด์ฃผ๋ฉด ๋ฉ์๋๊ฐ ์คํ๋ญ ๋ ์บ์์ ๋ด์ฉ์ด ์ ๊ฑฐ๋๋ค.
// ๋ง์ฝ bestSeller๋ผ๋ ์ด๋ฆ์ ์บ์๋ฅผ ์ด๊ธฐํํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์์ฑํด์ค ์ ์๋ค.
@CacheEvict(value = "bestSeller")
public void clearBestSeller() {
}
// @CacheEvict๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ์๋์ ํค์ ํด๋นํ๋ ์บ์๋ง ์ ๊ฑฐํ๋ค.
// ๋ง์ฝ ๋ค์๊ณผ ๊ฐ์ ๋ฉ์๋์ @CacheEvict๋ฅผ ์ ์ฉํ๋ค๋ฉด bookNo์ ๊ฐ์ ํค ๊ฐ์ ๊ฐ์ง ์บ์๋ง ์ ๊ฑฐ๋๋ค
@CacheEvict(value = "book", key = "#book.bookNo")
public void updateBook(Book book) {
}
// ๋ง์ฝ ์บ์์ ์ ์ฅ๋ ๊ฐ์ ๋ชจ๋ ์ ๊ฑฐํ ํ์๊ฐ ์๋ฐ๋ฉด allEntires ์์ฑ์ true๋ก ์ง์ ํด์ฃผ๋ฉด ๋๋ค.
@CacheEvict(value = "bestSeller", allEntires = true)
public void clearBestSeller() {
}
์ถ์ฒ: https://mangkyu.tistory.com/179 [MangKyu's Diary:ํฐ์คํ ๋ฆฌ]
๐คท์บ์ฑ์ ๋ฌธ์ ์
- ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ - ํ์ฑํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ธ์คํด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ ค ์บ์ฑํ๋ ๋ฐฉ๋ฒ์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ผ๋ก ์ธํด ๋น์ ์ ์ข ๋ฃ๋ก ์ด์ด์ง ์ ์์
- ๋ถ์ฐ ํ๊ฒฝ ๋ฌธ์ - ๋ถ์ฐ ํ๊ฒฝ์์ ์๋ก ๋ค๋ฅธ ์๋ฒ ์ธ์คํด์ค ๊ฐ์ ๋ฐ์ดํฐ ๋ถ์ผ์น ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์
> ์ด๋ฐ ๊ฒฝ์ฐ ์บ์ฑ ์๋ฒ๋ฅผ ์ด์ฉํ์ฌ ํด๊ฒฐ์ด ๊ฐ๋ฅํ๋ค. ํ์ ์ ์ฉํ ์ ์๋ค๋ฉด ๊ธ๋ก ์์ฑํ๊ณ ์ถ๋ค.
'ํฅํด99' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฑํฐ 3-3 8์ฃผ์ฐจ ๋ถํ๋ฅผ ์ ์ ํ๊ฒ ์ถ์ํ๊ธฐ - ์ธ๋ฑ์ค (index) (0) | 2024.08.06 |
---|---|
STEP 13.์ฝ์ํธ ํธ๋ํฝ ์ฒ๋ฆฌ + ํ ํฐ ์ ๋ต (ํฅํด99 ๋ฐฑ์๋ 5๊ธฐ) (0) | 2024.07.31 |
7์ฃผ์ฐจ ํ๊ณ ๋ ธํธ (0) | 2024.07.27 |
ํฅํด ํ๋ฌ์ค ๋ฐฑ์๋ 5์ฃผ์ฐจ ํ๊ณ .. (0) | 2024.07.20 |
4์ฃผ์ฐจ ํ๊ณ ๋ ธํธ (0) | 2024.07.06 |
- Total
- Today
- Yesterday
- HTTP
- SpringBoot
- JPA
- ๋ก๊ทธ์ธ
- ์ปจํธ
- reject
- rejectValue
- hypertexttransferprotocol
- Intercepter
- ์ธํฐ์ ํฐ
- jpa api
- BindingResult
- ํญํด99
- ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๊ณต๋ถ
- ํฅํดํ๋ฌ์ค๋ฐฑ์๋
- Java
- React
- ์์ธ์ฒ๋ฆฌ
- ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ญ๋
- react์คํ
- filter
- ArgumentResolver
- ๋ฆฌํฐ๋ด
- ํฅํดํ๋ฌ์ค
- exception
- ์คํ๋ง๋ถํธ
- ์คํ๋ง๊ณต๋ถ
- ํฅํด99
- ํญํดํ๋ฌ์ค
- thymleaf
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |