๐ก EhCache๋ ์บ์๋ฅผ ์บ์์ ์ฅ์์ ๋ง๋ฃ์๊ฐ๊ณผ ํจ๊ป ์ ์ฅํ๊ณ , ์ฌ์ฉ์ ์์ฒญ์ด ์์ ๋ ๋ง๋ฃ์๊ฐ ์ ์ด๋ผ๋ฉด ํด๋น ์ ์ฅ์์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ๋ฐฉ์์ด๋ค.
์น๋ทฐ ํ๋ก์ ํธ๋ฅผ ์งํํ ๊ฒฝํ์ด ์์ต๋๋ค. ์ด ๋ DB์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ป์ด์ ํด๋น ๊ฐ์ ID๋ณ๋ก ๋ถ๊ธฐ์ฒ๋ฆฌ๋ฅผ ํด ํ๋ฉด์ ๋ฟ๋ ค์ฃผ๋ ์์ ์ ํ์์ต๋๋ค.
์ด ๊ณผ์ ์์ ์๋ง์ ์ฌ์ฉ์๋ค์ด ํ์ด์ง์ ์ ์ ํ ๋ ๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ์ป์ด ์ค๊ธฐ ์ํด์ ๋งค๋ฒ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ ค DB์ ์ ๊ทผํ๋ ๊ฒ์ด ๋ฌด๋ฆฌ๊ฐ ์๋ค๊ณ ์๊ฐํ์์ต๋๋ค. ๋ฟ๋ง์๋๋ผ DB์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๊ฐ์ด ์ ๋ณํ์ง ์๋ ๊ฐ์ด๋ผ๋ฉด ์บ์์ ์ ์ฅํด์ ์ฌ์ฉํ๋๊ฒ์ด ํจ์ฌ ํจ์จ์ ์ด๋ผ๋๊ฒ์ ๋ฐฐ์ ์ต๋๋ค.
์บ์๋ ์๋ฒ์ ๋ถ๋ด์ ์ค์ด๊ณ , ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ธฐ์ ์ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ ๊ฐ์ ๋ฏธ๋ฆฌ ๋ณต์ฌํ์ฌ ์์์ ์ฅ์์ ๋ฃ์ด๋๊ณ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋์ ๊ฐ์ ๊ฒฝ์ฐ์ ์บ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ข์ต๋๋ค.
Spring์์ Cacheable
๊ณผ ๊ฐ์ ์บ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด ๋ณ๋์ ์ ์ธ์ด ํ์ํฉ๋๋ค. EnableCaching
์ด๋
ธํ
์ด์
์ Config ํ์ผ์ ์ค์ ํฉ๋๋ค.
@EnableCaching
@Configuration
public class cacheConfig {
...
}
EhChache๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์บ์์ ์ด๋ฆ, ์บ์์ ์ ์ฅํ ์๊ฐ ๋ฑ์ ์ค์ ํด์ผ ํฉ๋๋ค.
<ehcache>
...
<cache name='getData' eternal="true" maxElementsInMemory="300" overflowTodisk=false" timeToIdleSeconds="600" memoryStoreEvictionPolicy="LFU"></cache>
</ehcache>
maxElementsInMemory๋ ๋ฉ๋ชจ๋ฆฌ์ ์บ์ฑ ๋์ด์ง ์ต๋ ๊ฐ์ฒด์๋ฅผ ์๋ฏธํฉ๋๋ค.
overflowTodisk๋ ์ค๋ฒํ๋ก์ฐ ๋๋ ๊ฐ์ฒด๋ค์ ๋์คํฌ์ ์ ์ฅ ํ ์ง ๊ฒฐ์ ํฉ๋๋ค.
timeToIdleSeconds๋ ํด๋น ์๊ฐ๋์ ๊ฐฑ์ ํ ์ง ๊ฒฐ์ ํฉ๋๋ค.
memoryStoreEvictionPolicy๋ maxElementsInMemory
์ ๋๋ฌ ํ์ ๋ ๊ฐ์ฒด๋ค์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ ์ง ๋ฐฉ๋ฒ์ ๋ํ๋
๋๋ค.