Spring

[Spring] Spring Cache(์Šคํ”„๋ง ์บ์‹œ)๋ž€?

2024. 2. 19. 13:58
๋ชฉ์ฐจ
  1. ๐Ÿ”Ž Spring Cache๋ž€?
  2.  
  3. ์–ด๋…ธํ…Œ์ด์…˜
  4. @Cacheable, @CachePut, @CacheEvict
  5. @CachePut vs @Cacheable

 

๐Ÿ”Ž Spring Cache๋ž€?

์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋งค๋ฒˆ ์š”์ฒญํ•  ๋•Œ๋งˆ๋‹ค ์ƒ์„ฑํ•˜์—ฌ ์‘๋‹ตํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค๋Š” ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•ด ๋†“๊ณ  ๋˜‘๊ฐ™์€ ์š”์ฒญ์ด ์™”์„ ๋•Œ ๋กœ์ง์„ ๊ฑฐ์น˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ์–ด ๋น ๋ฅธ ๊ฒ€์ƒ‰์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.

  • ๋กœ์ปฌ ์บ์‹œ์ด๊ธฐ ๋•Œ๋ฌธ์— application๊ฐ„ ๊ณต์œ ๊ฐ€ ๋˜์ง€ ์•Š๊ณ  ์„œ๋ฒ„๋ฅผ ๋Œ ๋•Œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‚ ์•„๊ฐ€๋ฏ€๋กœ ๊ณ„์† ์œ ์ง€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด redis ๊ฐ™์€ ์™ธ๋ถ€ ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ณณ

  • ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋˜๋Š” ๊ฐ’์ด ๋™์ผํ•  ๋•Œ
  • ๋นˆ๋ฒˆํ•˜๊ฒŒ ํ˜ธ์ถœ๋  ๋•Œ
  • ํ•œ ๋ฒˆ ์ฒ˜๋ฆฌํ•  ๋•Œ ๋งŽ์€ ์„œ๋ฒ„ ๋ฆฌ์†Œ์Šค๋ฅผ ์š”๊ตฌํ•  ๋•Œ

 

์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•  ๊ณณ

  • ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ •ํ™•์„ฑ์„ ์š”๊ตฌํ•˜๋Š” ๊ฒฝ์šฐ
  • ๋นˆ๋ฒˆํ•˜๊ฒŒ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ

 

์Šคํ”„๋ง ์„ค์ •

implementation 'org.springframework.boot:spring-boot-starter-cache

 

์–ด๋…ธํ…Œ์ด์…˜

์–ด๋…ธํ…Œ์ด์…˜ ์„ค๋ช…
@EnableCache Spring Boot Cache๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด โ€˜์บ์‹œ ํ™œ์„ฑํ™”โ€™๋ฅผ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜
@CacheConfig ์บ์‹œ ์ •๋ณด๋ฅผ โ€˜ํด๋ž˜์Šค ๋‹จ์œ„โ€™๋กœ ์‚ฌ์šฉํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ์–ด๋…ธํ…Œ์ด์…˜
@Cacheable ์บ์‹œ ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— โ€˜์ €์žฅโ€™ํ•˜๊ฑฐ๋‚˜ โ€˜์กฐํšŒโ€™ํ•ด์˜ค๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜
@CachePut ์บ์‹œ ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— โ€˜์ €์žฅโ€™ํ•˜๋ฉฐ ์กด์žฌ ์‹œ ๊ฐฑ์‹ ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜
@CacheEvict ์บ์‹œ ์ •๋ณด๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์ƒ์— โ€˜์‚ญ์ œโ€™ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜
@Caching ์—ฌ๋Ÿฌ ๊ฐœ์˜ โ€˜์บ์‹œ ์–ด๋…ธํ…Œ์ด์…˜โ€™์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜

 

 

@Cacheable, @CachePut, @CacheEvict

@Cacheable(cacheNames = "memberCache", key = "#key")
public Member getCacheData(final String key) {
	log.info("ํ•ด๋‹น key์— ๋Œ€ํ•œ ์บ์‹œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ ๋กœ๊ทธ๊ฐ€ ์ฐํžŒ๋‹ค.");
	return Member;
}

@CachePut(cacheNames = "memberCache", key = "#key")
public Member updateCacheData(final String key, final String value) {
	log.info("ํ•ด๋‹น key์— ๋Œ€ํ•œ ์บ์‹œ๊ฐ€ ์—†๋ฐ์ดํŠธ ๋˜๋Š” ๊ฒฝ์šฐ ๋กœ๊ทธ๊ฐ€ ์ฐํžŒ๋‹ค.");
	Member member = new Member();
	member.setValue(value);
	member.setExpirationDate(LocalDateTime.now().plusDays(1));
	return member;
}

@CacheEvict(cacheNames = "memberCache", key = "#key")
public boolean expireCacheData(final String key) {
	log.info("ํ•ด๋‹น key์— ๋Œ€ํ•œ ์บ์‹œ๋ฅผ ์ง€์šธ ๊ฒฝ์šฐ ๋กœ๊ทธ๊ฐ€ ์ฐํžŒ๋‹ค.");
	return true;
}

 

@Cacheable(cacheNames = "memberCache", key = "#key")

ํ•ด๋‹น key์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋ฉด getCacheData๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ณ  ๊ธฐ์กด ๋ฐ์ดํ„ฐ๊ฐ€ return ๋œ๋‹ค. ๋ฉ”์„œ๋“œ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋กœ๊ทธ๋„ ์ฐํžˆ์ง€ ์•Š๋Š”๋‹ค.

 

 

  @Cacheable("memberCacheStore")
  public Member cacheable(String date) {
    log.info("cache ์ €์žฅ");
    return member;
  }

  @Cacheable(value = "memberCacheStore", key = "#member.name")
  public Member cacheableByKey(Member member) {
		log.info("cache ์ €์žฅ(key ์ง€์ •)");
    return member;
  }

  @Cacheable(value = "memberCacheStore", key = "#member.name", condition = "#member.name.length() > 5")
  public Member cacheableWithCondition(Member member) {
		log.info("์กฐ๊ฑด๋ถ€ cache ์ €์žฅ");
    return member;
  }
  • spEL(Spring Expression Language) ๋ฌธ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ String , Integer, Long ๊ฐ™์€ ๊ฐ’์€ #๋ณ€์ˆ˜๋ช… ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ๋˜๊ณ , ๊ฐ์ฒด ์•ˆ์— ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๋ฅผ ๋น„๊ตํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” #๊ฐ์ฒด๋ช….๋ฉค๋ฒ„๋ช… ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

@CachePut vs @Cacheable

@CachePut๊ณผ @Cacheable์€ ์œ ์‚ฌํ•˜๊ฒŒ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ์บ์‹œ์— ์ €์žฅํ•˜์ง€๋งŒ, @Cacheable์€ ์บ์‹œ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๋Š” ๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  @CachePut์€ ์บ์‹œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์ฃผ๋กœ ์‚ฌ์šฉ๋œ๋‹ค.

  • @CachePut์€ ๋ฌด์กฐ๊ฑด ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๊ณ , @Cacheable์€ ์บ์‹œ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.
์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Spring] @ExceptionHandler๋ฅผ ํ†ตํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ (+ DTO Validation)  (0) 2024.03.05
[Spring] MessageSource๋ฅผ ์ด์šฉํ•œ ๊ตญ์ œํ™” exception ์ ์šฉํ•˜๊ธฐ  (0) 2024.03.02
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ์‚ฌ์šฉ์ž DB ๋“ฑ๋ก ๋ฐ PasswordEncoder  (2) 2023.11.22
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) CSRF, CsrfFilter - ๋กœ๊ทธ์•„์›ƒ ์˜ˆ์ œ  (2) 2023.11.20
[Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ExceptionTraslationFilter, RequestCacheAwareFilter  (0) 2023.11.15
  1. ๐Ÿ”Ž Spring Cache๋ž€?
  2.  
  3. ์–ด๋…ธํ…Œ์ด์…˜
  4. @Cacheable, @CachePut, @CacheEvict
  5. @CachePut vs @Cacheable
'Spring' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Spring] @ExceptionHandler๋ฅผ ํ†ตํ•œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ (+ DTO Validation)
  • [Spring] MessageSource๋ฅผ ์ด์šฉํ•œ ๊ตญ์ œํ™” exception ์ ์šฉํ•˜๊ธฐ
  • [Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) ์‚ฌ์šฉ์ž DB ๋“ฑ๋ก ๋ฐ PasswordEncoder
  • [Spring] Spring Security(์Šคํ”„๋ง ์‹œํ๋ฆฌํ‹ฐ) CSRF, CsrfFilter - ๋กœ๊ทธ์•„์›ƒ ์˜ˆ์ œ
DAHLIA CHOI
DAHLIA CHOI
DAHLIA CHOI
๐ŸŒผ dali's log ๐ŸŒผ
DAHLIA CHOI
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (103)
    • Spring (42)
    • JAVA & OOP (8)
    • AWS (2)
    • DevOps (5)
    • Network (7)
    • DB (5)
    • Algorithm (9)
      • BOJ (6)
      • PROGRAMMERS (2)
      • LEETCODE (0)
    • Books (5)
    • ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… (5)
    • ํšŒ๊ณ  (0)
    • ๊ธฐํƒ€ (5)
    • FRENCH (1)
    • ํ•„์‚ฌ (2)
    • ๊ฒฝํ—˜ (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

hELLO ยท Designed By ์ •์ƒ์šฐ.
DAHLIA CHOI
[Spring] Spring Cache(์Šคํ”„๋ง ์บ์‹œ)๋ž€?
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.