Cache
Last updated
Last updated
ํ๋ก๊ทธ๋จ์ด ์ํ๋ ๋ ๋ํ๋๋ ์ง์ญ์ฑ์ ์ด์ฉํด ๋ฉ๋ชจ๋ฆฌ๋ ๋์คํฌ์์ ์ฌ์ฉ๋์๋ ๋ด์ฉ์ ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์๋ ๊ณณ์ ๋ณด๊ดํ๊ณ ๊ด๋ฆฌํจ์ผ๋ก์จ ๋ ๋ฒ์งธ ์ ๊ทผ ๋ถํฐ๋ ๋ณด๋ค ๋น ๋ฅด๊ฒ ์ฐธ์กฐํ๋๋ก ํ๋ ๊ฒ์ด๋ค.
ํ๋๋์คํฌ๋ ์ฉ๋์ด ์์ฃผ ํฌ์ง๋ง ์๋๊ฐ ๋๋ฆฌ๊ณ , ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(RAM)์ ์ฉ๋์ 1/100์ ๋๋ก ์์ง๋ง ์๋๋ ์ญ๋ง๋ฐฐ ์ ๋ ๋น ๋ฅด๋ค. ์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(RAM)์ 1/100 ์ ๋ ์ฉ๋์ด์ง๋ง ์๋๋ ํจ์ฌ ๋น ๋ฅด๋ค.
์ฆ, ์ฌ์ฉ๋์๋ ๋ฐ์ดํฐ๋ ๋ค์ ์ฌ์ฉ๋์ด์ง ๊ฐ๋ฅ์ฑ์ด ๋๋ค๋ ๊ฐ๋ ์ ์ด์ฉํ์ฌ, ๋ค์ ์ฌ์ฉ๋ ํ๋ฅ ์ด ๋์ ๊ฒ์ ๋ ๋น ๋ฅด๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ ์ ์ฅ์๋ฅผ ์ฌ์ฉํ๋ค๋ ๊ฐ๋ ์ด๋ค.
๋จ์ํ ๋ฐ์ดํฐ(์ ๋ณด)
๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ์ ๊ณตํด์ผํ๋ ๊ฒฝ์ฐ
๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ฃผ๊ธฐ๊ฐ ๋น๋ฒํ์ง ์๊ณ , ๋จ์ ์ฒ๋ฆฌ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ ๊ฒฝ์ฐ
๋ฐ์ดํฐ์ ์ต์ ํ๊ฐ ๋ฐ๋์ ์ค์๊ฐ์ผ๋ก ์ด๋ค์ง์ง ์์๋ ์๋น์ค ํ์ง์ ์ํฅ์ ๊ฑฐ์ ์ฃผ์ง ์๋ ๋ฐ์ดํฐ
์ด๋ ๊ฒ ์บ์๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฒ๊ฐ ๋ถํ์ํ ํธ๋ํฝ์ ์ค์ผ ์ ์์ผ๋ฉฐ, ๊ทธ๋ก ์ธํด ์น ์ดํ๋ฆฌ์ผ์ด์ ์๋ฒ์ ๋ถํ๊ฐ ๊ฐ์๋๋ค. ๋ํ ์บ์์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ์ฝ์ด์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๋ ๊ณ ๊ฐ์๊ฒ ์พ์ ํ ์๋น์ค ๊ฒฝํ์ ์ ๊ณตํ ์ ์๋ค.
์น์ ์์ฒญ์ ๋ ๋ฆฌ๋ฉด, ์์ฒญ์ ์น ๋ธ๋ผ์ฐ์ ๋ก๋ถํฐ ํ๋ ๋์คํฌ์ ํ์ผ ์์คํ ์ ์๋ ์ ์ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๋ ์น ์๋ฒ๋ก ์ ๋ฌ๋๋ค.
์ฒซ ๋ฒ์งธ ์์ฒญ์์๋ ํ๋ ๋์คํฌ๋ ์บ์๋ฅผ ํ์ธํ์ฌ ์บ์ ๋ฏธ์ค(cache miss)๋ฅผ ๋ฐ์์ํจ๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ ๋๋ผ์ด๋ธ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ถํ์ ๋ค์ ์์ฒญ ๋ฐ์ ์ ์์์ ๊ฐ์ ํ๊ณ ์บ์์ ์ ์ฅํ๋ค.
์ดํ ์์ฒญ๋ถํฐ๋ ์บ์ ์กฐํ์ ์บ์ ํํธ(cache hit)๋ฅผ ๋ฐ์์ํจ๋ค. ์ด ๋ฐ์ดํฐ๋ ์บ์ ๋ฏธ์ค๋ฅผ ์ผ์ผํค๊ธฐ ์ ๊น์ง ๋ฒํผ์์ ์ ๊ณต๋๋ค.
Cache Miss
CPU๊ฐ ์ฐธ์กฐํ๊ณ ์ ํ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์บ์์ ์กด์ฌํ์ง ์์ ๋
Cache Hit
CPU๊ฐ ์ฐธ์กฐํ๊ณ ์ ํ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์บ์์ ์กด์ฌํ ๋
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์์ ์ํ๋๊ธฐ ๋๋ฌธ์ ์๋๊ฐ ๋๋ ค์ง๊ณ ๋ถํ๊ฐ ๋ชฐ๋ฆด ์ ์๋ค. ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์บ์ฑํจ์ผ๋ก์จ ์๋ต ์๊ฐ์ ํฅ์์ํฌ ์ ์๋ค. ๋๋ค์์ ๋จธ์ ์ด ๋์ผํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์ผํ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ค. ๋๋ค์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ๋ ์ต์ ํ๋ ์บ์ฑ์ ์ํ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ๋ฉฐ, ์๊ตฌ์ฌํญ์ ๋ง๊ฒ ์์ ํ ์ ์๋ ํ๋ผ๋ฏธํฐ๋ค์ด ์กด์ฌํ๋ค.
์น ์๋ฒ์ ์๋ต์ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ฑ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์บ์๋ ๋ก์ปฌ ์ธ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ฑฐ๋ ์บ์ ์๋ฒ ์์์ ์คํ๋๋ redis์ ๊ฐ์ ์ธ๋ฉ๋ชจ๋ฆฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ ์ ์๋ค.
๋ชจ๋ ๋ธ๋ผ์ฐ์ ๋ HTML, JS, CSS, ์ด๋ฏธ์ง์ ๊ฐ์ ํ์ผ๋ค์ ์์ ์ ์ฅ์ ์ํด HTTP ์บ์(์น ์บ์)์ ๊ตฌํ์ ์ ๊ณตํ๊ณ ์๋ค. ์๋ฒ ์๋ต์ด ์ฌ๋ฐ๋ฅธ HTTP ํค๋ ์ง์์๋ฅผ ์ ๊ณตํด ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ต์ ์บ์ฑํ ์ ์๋ ์๊ธฐ์ ์ง์ ๊ธฐ๊ฐ์ ์ง์ํ ๋ ์ฌ์ฉํ๋ค.
๋ฆฌ์์ค๊ฐ ๋ก์ปฌ ์บ์๋ก๋ถํฐ ๋น ๋ฅด๊ฒ ๋ก๋๋๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ ๊ฒฝํ์ด ํฅ์๋๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ ๋ฐ ํ์ดํ๋ผ์ธ์ ๋ค๋ฅธ ๊ตฌ์ฑ์์์ ๋ํ ๋ถํ๊ฐ ์ค์ด๋ ๋ค.
๋ถํ์ํ ๋์ญํญ์ ๋ํ ์ง๋ถ๋น์ฉ์ด ์ค์ด๋ ๋ค.
REmote DIctionary Server์ ์ฝ์๋ก ๋์ฉ๋ ์ฒ๋ฆฌ ๊ด๋ จ ๊ธฐ์ ์ด๋ค.
๋ฉ๋ชจ๋ฆฌ ์์์ ๋์ํ๋ Key/value ์ ์ฅ์(Store)์ธ Redis๋ NoSQL DBMS๋ก ๋ถ๋ฅ๋๋ฉฐ ๋์์ Memcached์ ๊ฐ์ ์ธ๋ฉ๋ชจ๋ฆฌ(In-memory) ์๋ฃจ์ ์ผ๋ก ๋ถ๋ฆฌ๋๋ค.
๋ช ์์ ์ผ๋ก ์ญ์ , expire๋ฅผ ์ค์ ํ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ๋ ์ญ์ ๋์ง ์๋๋ค.(์๊ตฌ ๋ณด์กด)
์ฌ๋ฌ๋์ ์๋ฒ ๊ตฌ์ฑ์ด ๊ฐ๋ฅํ๋ค.
์ธ๋ฉ๋ชจ๋ฆฌ ์บ์(In-memory Cache)๋?
์ธ ๋ฉ๋ชจ๋ฆฌ ์บ์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ(RAM)์๋ง ์ฌ๋ ค๋๊ณ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ์ข ์ด๋ค. ์ผ๋ฐ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค(RDBMS)๋ ๋์คํฌ(HDD, SSD)์ ๋ฐ์ดํฐ๋ฅผ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํด๋๊ณ , ํ์ํ ๋ฐ์ดํฐ๋ง ๋ฉ๋ชจ๋ฆฌ์ ์ฝ์ด์ ์ฌ์ฉํ๋ค.
๋์คํฌ์ ์ ๊ทผํ์ง ์๊ณ ๋ฉ๋ชจ๋ฆฌ๋ก๋ง ๋ชจ๋ ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ์ ์ฅ ๋ฐ ๊ฒ์ ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด์ง๋ง ๋ฐ์ดํฐ๋ ๋ฑ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ(์ด์์ฒด์ ์ฌ์ฉ๋ ์ ์ธ)๊น์ง๋ง ์ ์ฅํ ์ ์๋ค.
Varnish๋ BSD ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฅด๋ ์คํ ์์ค ์น ์บ์ ์ํํธ์จ์ด์ด๋ค.
์ฃผ๋ก nginx ์๋จ์์ url ๊ธฐ๋ฐ์ผ๋ก ๋์ผํ url์ด ๋ค์ด์ค๋ฉด ์๋ต๊ฐ์ ๊ทธ๋๋ก ๋ณด๋ด์ค๋ ์ฌ์ฉํ๋ค.
Varnish๋ ์ค์ ์ ์ํด VCL์ด๋ผ๋ ๋ณ๋์ DSL(Domain-Specific Language)์ ์ ๊ณตํ๋ค. ์ฌ์ฉ์๋ VCL์ ์ฌ์ฉํ์ฌ ์ค์ ํ์ผ์ ์์ฑํ๋ค. VCL๋ก ์์ฑ๋ ์ค์ ํ์ผ์ ๋ด์ฉ์ C ํ๋ก๊ทธ๋จ์ผ๋ก ๋ณํ๋์๋ค๊ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ปดํ์ผ๋๋ค. Varnish๋ ์์ํ ๋๋ ์คํ ์ค์ผ ๋ ์ด ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ผ์ ๋ก๋ํ์ฌ ์ฌ์ฉํ๋ค. ๋์์ ์ฌ๋ฌ ๊ฐ์ ์ค์ ์ ๋ก๋ํ ํ์ Varnish ์คํ ์ค์ ์ค์ ์ ๋ณ๊ฒฝํ ์ ์๋ค.
๋ค์ ๊ทธ๋ฆผ์ Varnish๊ฐ ์น ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ ๊ฐ๋ตํ๊ฒ ๋ํ๋ธ ๊ฒ์ด๋ค.
purge๋ ์บ์ฑ๋์ด ์๋ ๋ฐ์ดํฐ๋ฅผ TTL(Time - To - Live)์ด ์ง๋๊ฐ๊ธฐ์ ์ ๊ฐ์ ๋ก ์ญ์ ํ๋ ๊ธฐ๋ฅ์ด๋ค. ๋ค์๊ณผ ๊ฐ์ ๋๊ฐ์ง ํํ๋ก purge ๊ธฐ๋ฅ์ ์ ๊ณตํด์ฃผ๊ณ ์๋ค.
ํน์ url์ ์ง์ ํ์ฌ ํด๋น ๋ฐ์ดํฐ ์ญ์
์ ๊ทํํ์์ ์ฌ์ฉํด ํด๋น ํจํด์ ๋ฐ์ดํฐ๊ฐ ์ฌ์ฉ๋์ง ์๋๋ก ํ๋ ๋ฐฉ๋ฒ
์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ์ง๋ ์๊ธฐ ๋๋ฌธ์ ban
์ด๋ผ๊ณ ํ๋ค.
๋ ๋ฒ์งธ๋ ์ค์ ๋ก ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ์ง๋ ์๊ธฐ ๋๋ฌธ์ ban์ด๋ผ๊ณ ํ๋ค. ์บ์์์ ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ๋ ban์ผ๋ก ์ง์ ๋ ์ ๊ท ํํ์์ ํด๋นํ๋์ง ๊ฒ์ฌํ๋ค. ์ ๊ท ํํ์์ ์ถ๊ฐํ ๋์๋ ๋ฐ์ดํฐ๊ฐ ์ ๊ท ํํ์์ ์ผ์นํ๋์ง ๊ฒ์ฌํ์ง ์๋๋ค. ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ ๋ ์๋ก์ด ์ถ๊ฐ๋ ban ์กฐ๊ฑด์ ๊ฒ์ฌํ์ฌ, ์กฐ๊ฑด์ ๋ง์กฑ์ํค๋ฉด ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ban์ ์ง์ ํ ์ ์๊ณ , ํด๋น ํจํด์ ํฌํจ๋๋ ๋ฐ์ดํฐ๋ ์บ์ฑ๋์ง ์๋๋ค.
์๋ฅผ ๋ค์ด ์ผํ๋ชฐ ์ํ์์ธ ํ์ด์ง๋ ๋ณ๊ฒฝ์ด ์ ์ผ๋ url ๊ธฐ๋ฐ์ผ๋ก varnish cache๋ฅผ ํ์ ์๋ฒ๊น์ง ์๋ณด๋ด๊ณ , redis๋ ์๋น์ค ์์ฒญ์ด ๋์ด๋๋ ๊ฒฝ์ฐ DB ๋ถํ๊ฐ ๊ฐ์ค๋๋ API์ ๊ฑธ์ด์ ๋ฉ๋ชจ๋ฆฌ์ ์ค์๊ฐ์ผ๋ก ์ ์ฅ์ํค๋ ๊ฒ์ด๋ค.
Spring Caching Abstraction๋ ๋ค๋ฅธ ์บ์ ์๋ฃจ์ ์ Spring CacheManager๋ฅผ ํตํด์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ํด์ค๋ค. Spring Caching Abstraction๋ ์๋ฐ ๋ฉ์๋์ ์บ์ฑ์ ์ ์ฉํ๋ฉฐ, ๋ฉ์๋๊ฐ ์คํ๋ ๋ ๋์ด์จ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ฐ๋ผ์ ์บ์๋ฅผ ์ ์ฉํ๋ค.
pom.xml
pom.xml
์ ๋ค์๊ณผ ๊ฐ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ ํ @EnableCaching
์ด๋
ธํ
์ด์
์ ์ ์ธํ๊ฒ ๋๋ฉด Spring Container์ ๋น์ด ๋ฑ๋ก๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก๋ ConcurrentMapCacheManager
๊ฐ ๋ฑ๋ก๋๋ฉฐ, ์ํฉ์ ๋ง๊ฒ ๋ค๋ฅธ ์บ์ ๊ตฌํ์ฒด๋ฅผ ๋ฑ๋กํ ์ ์๋ค.
๋ง์ฝ EHCache, Redis ๋ฑ ์๋ํํฐ ๋ชจ๋์ ์ถ๊ฐํ๊ฒ ๋๋ฉด, EHCacheManager
, RedisCacheManager
๋ฅผ Bean์ผ๋ก ๋ฑ๋กํด ์ฌ์ฉํ ์ ์๋ค.
์ ์ฉํ๊ณ ์ถ์ ๋ฉ์๋์ @Cacheable
์ด๋
ธํ
์ด์
์ ๋ถ์ด๋ฉด ์ ์ฉ๋๋ค.
์ด๋ ธํ ์ด์
์ค๋ช
@Cacheable
๋ฉ์๋์ ์บ์ ํธ๋ฆฌ๊ฑฐ ์ค์
@CachePut
๋ฉ์๋ ์คํ๊ณผ ๋ฐฉํด์์ด ์บ์ ๊ฐฑ์
@CacheEvict
์บ์๋์ด์๋ ๋ฐ์ดํฐ ์ง์ฐ๊ธฐ
@CacheConfig
์บ์ ๊ด๋ จ ์ค์
@EnableCaching
์คํ๋ง ์บ์ํ์ฑํ
์ด๋ ธํ ์ด์
์ค๋ช
value
์บ์์ ์ด๋ฆ
key
์บ์ํ ํค๋ฅผ ์ค์ (๊ธฐ๋ณธ์ค์ ํ์ง ์์ผ๋ฉด ํ๋ผ๋ฏธํฐ๋ก ์ค์ ๋จ)
condition
ํน์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์บ์๋ฅผ ํ ์ง ์์์ง ๊ฒฐ์
cacheManager
ํด๋น ์บ์ ๋งค๋์ ์ค์ ๊ฐ๋ฅ
EHCache๋ ์คํ ์์ค ๊ธฐ๋ฐ์ Local Cache
์๋๊ฐ ๋น ๋ฅด๋ฉฐ, ๊ฒฝ๋ Cache ์ด๋ค.
Disk, Memory ์ ์ฅ์ด ๊ฐ๋ฅ
์๋ฒ ๊ฐ ๋ถ์ฐ ์บ์๋ฅผ ์ง์
JSR107 JCache ํ์ค์ ์ง์ํ๋ค. JCache์์ ์ ๊ณตํ๋ Annotation์ ํตํด ์ด๋ฏธ ์์ฑ๋ ์ฝ๋์ ๊ฐ๋จํ๊ฒ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ์ ์๋ค.
JSR(Java Specification Requests) : ์ฌ์ ๋ฐ ๊ธฐ์ ์ ๋ณ๊ฒฝ์ ๋ํ ์ ์ ์ ์ ๋ฌธ์. ๊ฐ์ธ ๋ฐ ์กฐ์ง์ JCP (Java Community Process)์ ํ์์ด ๋ ์ ์์ผ๋ฉฐ JSR์ ์ธ๊ธ ๋ ์คํ์ ๋ฐ๋ผ ์ฝ๋๋ฅผ ๊ฐ๋ฐํ ์ ์๋ค. ๊ฐ๋ฐ ๋ ๊ธฐ์ ์ ๋ณํ๋ JCP ํ์๋ค์ ๊ฒํ ๋ฅผ ๊ฑฐ์ณ ์น์ธ๋๋ค.
JSR-107(JCACHE โ Java Temporary Caching API) : ๊ฐ์ฒด ์์ฑ, ๊ณต์ ์ก์ธ์ค, ์คํ๋ง, ๋ฌดํจํ ๋ฐ JVM ์ ๋ฐ์ ๊ฑธ์น ์ผ๊ด์ฑ์ ํฌํจํ์ฌ Java ๊ฐ์ฒด์ ๋ฉ๋ชจ๋ฆฌ ์บ์ฑ์์ ์ฌ์ฉํ API ์ ๋ํ ๊ธฐ์ค์ผ๋ก ๋ณผ ์ ์๋ค. ํด๋น Spec ์ผ๋ก ๊ตฌํ๋ cache๋ก๋ EhCache๊ฐ ์ ๋ช ํ๋ฉฐ, Hazelcast, Infinispan, Couchbase, Redis, Caffeine ๋ฑ๋ ํด๋น ๊ธฐ์ค์ ๋ฐ๋ฅด๋ ๊ฒ์ผ๋ก ์๋ ค์ ธ ์๋ค.
pom.xml
EHCache๋ฅผ ์ ์ฉํ๊ณ ์ถ์ ๊ฒฝ์ฐ์๋ pom.xml
์ ๋ค์๊ณผ ๊ฐ์ด ์๋ํํฐ ๋ชจ๋์ ์ถ๊ฐํ๋ฉด๋๋ค.
@EnableCaching
Spring์ auto-configuration์ EHCache์ JSR-107์ ์ฐพ์ง๋ง ๊ธฐ๋ณธ(default)๋ก๋ ์์ฑ๋์ง ์๋๋ค. ์๋ํ๋ฉด ehcache.xml
์ ์ฐพ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฌ๋ฏ๋ก, ehcache๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ค์๊ณผ ๊ฐ์ ์ค์ ์ ํด์ค์ผํ๋ค.
application.yml : ์คํ๋ง์ด ๊ตฌ๋๋ ๋ ์๋์ผ๋ก ๋ก๋ฉํ๋ ํ๋กํผํฐํ์ผ(application.properties๋ก๋ ์ฌ์ฉ ๊ฐ๋ฅ) ์คํ๋ง์ ๊ท์ฝ๊ณผ ๊ฐ์.
ehcache.xml
๊ทธ๋ฌ๋ฉด ํ๊ฒฝ ์ค์ ์ ์๋ฃ๋์๋ค.
์ฌ๊ธฐ์ @CacheEvict์ allEntries=true
๋ paymentMasterCache๋ก ๋ฑ๋ก๋ ๋ชจ๋ ์บ์๋ฅผ ์ญ์ ํ๋ค๋ ์๋ฏธ์ด๋ค. ์๋ฅผ ๋ค์ด findAll, findAll2 ๋๊ฐ์ ํค๋ก paymentMasterCache๊ฐ ์์ฑ๋ ๊ฒฝ์ฐ์ allEntries๋ฅผ ์ฌ์ฉํด ์ญ์ ํ๋ ๊ฒฝ์ฐ ๋ ๊ฐ์ ์บ์๊ฐ ๋ชจ๋ ์ญ์ ๋๋ค.