spring-cache

๐Ÿ“Œ Cache Abstraction

  • ์Šคํ”„๋ง์—์„œ๋Š” ๋นˆ์˜ ๋ฉ”์†Œ๋“œ์— ์บ์‹œ๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, AOP๋ฅผ ์ด์šฉํ•ด ๋ฉ”์†Œ๋“œ ์‹คํ–‰ ๊ณผ์ •์— ํˆฌ๋ช…ํ•˜๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.  
  • ์Šคํ”„๋ง์˜ ์บ์‹œ ์ถ”์ƒํ™”๋Š” ์บ์‹œ ํŠน์ • ๊ธฐ์ˆ ์— ์ข…์†๋˜์ง€ ์•Š์œผ๋ฉฐ AOP๋ฅผ ํ†ตํ•ด ์ ์šฉ๋˜์–ด
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ์บ์‹œ ๋ถ€๊ฐ€๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.  
  • ์ฆ‰, ์บ์‹œ API๋ฅผ ์ฝ”๋“œ์— ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„๋„ ์†์‰ฝ๊ฒŒ ์บ์‹œ ๊ธฐ๋Šฅ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ ์บ์‹œ ์„œ๋น„์Šค ๊ตฌํ˜„ ๊ธฐ์ˆ ์— ์ข…์†๋˜์ง€ ์•Š๋„๋ก ์ถ”์ƒํ™” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ™˜๊ฒฝ์ด ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ์ ์šฉํ•  ๊ธฐ์ˆ ์„ ๋ณ€๊ฒฝํ•ด์„œ ์บ์‹œ ์„œ๋น„์Šค์˜ ์ข…๋ฅ˜๊ฐ€ ๋‹ฌ๋ผ์ง€๋”๋ผ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋” ์ž์„ธํžˆ ๋งํ•˜๋ฉด ์บ์‹ฑ์ด ํ•„์š”ํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์—์„œ EhCache, redis ๋“ฑ ์บ์‹ฑ ์ข…๋ฅ˜์— ์˜์กดํ•˜์ง€ ์•Š๊ณ  ์ถ”์ƒํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์บ์‹ฑ์„ ์ ์šฉ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cache Manager

์บ์‹œ ์ถ”์ƒํ™”์—์„œ๋Š” ์บ์‹œ ๊ธฐ์ˆ ์„ ์ง€์›ํ•˜๋Š” ์บ์‹œ ๋งค๋‹ˆ์ €๋ฅผ ๋นˆ์œผ๋กœ ๋“ฑ๋กํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

โœ”๏ธ ConcurrentMapCacheManager

  • ConcurrentHashMap์„ ์ด์šฉํ•ด ์บ์‹œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์บ์‹œ ๋งค๋‹ˆ์ €์ž…๋‹ˆ๋‹ค.
  • ์บ์‹œ ์ •๋ณด๋ฅผ Map ํƒ€์ž…์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•ด๋‘๊ธฐ ๋•Œ๋ฌธ์— ๋น ๋ฅด๊ณ  ๋ณ„๋‹ค๋ฅธ ์„ค์ •์ด ํ•„์š”์—†๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์ง€๋งŒ, ์‹ค์ œ ์„œ๋น„์Šค์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ๊ธฐ๋Šฅ์ด ๋นˆ์•ฝํ•ฉ๋‹ˆ๋‹ค.  

โœ”๏ธ SimpleCacheManager

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ์บ์‹œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ์šฉํ•  ์บ์‹œ๋ฅผ ์ง์ ‘ ๋“ฑ๋กํ•˜์—ฌ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์บ์‹œ ๋งค๋‹ˆ์ €์ž…๋‹ˆ๋‹ค.

 

โœ”๏ธ EhCacheCacheManager

  • ์ž๋ฐ”์—์„œ ์œ ๋ช…ํ•œ ์บ์‹œ ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ํ•˜๋‚˜์ธ EhCache๋ฅผ ์ง€์›ํ•˜๋Š” ์บ์‹œ ๋งค๋‹ˆ์ €์ž…๋‹ˆ๋‹ค.
     

โœ”๏ธ CaffeineCacheManager

  • Java 8๋กœ Guava ์บ์‹œ๋ฅผ ์žฌ์ž‘์„ฑํ•œ Caffeine ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์บ์‹œ ๋งค๋‹ˆ์ €์ž…๋‹ˆ๋‹ค.
  • EhCache์™€ ํ•จ๊ป˜ ์ธ๊ธฐ ์žˆ๋Š” ์บ์‹œ ๋งค๋‹ˆ์ €์ธ๋ฐ, EhCache๋ณด๋‹ค ์ข‹์€ ์„ฑ๋Šฅ์„ ๊ฐ–๋Š”๋‹ค๊ณ  ํ•ด์„œ ์ตœ๊ทผ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

 

โœ”๏ธ CompositeCacheManager

  • ํ•œ ๊ฐœ ์ด์ƒ์˜ ์บ์‹œ ๋งค๋‹ˆ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ง€์›ํ•ด์ฃผ๋Š” ํ˜ผํ•ฉ ์บ์‹œ ๋งค๋‹ˆ์ €์ž…๋‹ˆ๋‹ค.

 

โœ”๏ธ JCacheCacheManager

  • JSR-107 ๊ธฐ๋ฐ˜์˜ ์บ์‹œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์บ์‹œ ๋งค๋‹ˆ์ €์ž…๋‹ˆ๋‹ค.