728x90
๐ ์บ์์ ๋ํ ์์ธํ ๊ฐ๋ ๋ค์ ์๋ ํฌ์คํ ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.
<[JPA] ์บ์ฑ(Caching)๊ณผ ์์์ฑ(persistence)>
โ๏ธ Ehcache
- Java์ ๋ํ์ ์ธ ์บ์ ์์ง ์ค์ ํ๋
โ ํน์ง
- ๊ฒฝ๋์ ๋น ๋ฅธ ์บ์ ์์ง
- ํ์ฅ(scable)
โ ๋ฉ๋ชจ๋ฆฌ & ๋์คํฌ ์ ์ฅ ์ง์, ๋ฉํฐ CPU์ ๋์ ์ ๊ทผ์ ํ๋ - ๋ถ์ฐ ์ง์
โ ๋๊ธฐ/๋น๋๊ธฐ ๋ณต์ฌ, ํผ์ด(peer) ์๋ ๋ฐ๊ฒฌ - ๋์ ํ์ง
โ Hibernate, Confluence, Spring ๋ฑ์์ ์ฌ์ฉ๋๊ณ ์์ผ๋ฉฐ, Gaia ์ปดํฌ๋ํธ์์๋ EHCache๋ฅผ ์ฌ์ฉํ์ฌ ์บ์ ๊ตฌํ
โ ์ฅ์
- ๋๊ท๋ชจ์ ๋์์ฑ ์์คํ
์ ์ํด ์ค๊ณ๋์ด ๋น ๋ฅด๊ณ ๋จ์ํ๋ฉฐ, ์ฑ์ ์ต๋ํ ๊ฐ๋ณ๊ฒ ์ ์งํ์ฌ ์์ ๊ณต๊ฐ์ ์ ์ง
[์ฐธ๊ณ ] https://www.ehcache.org/about/features - ์บ์์ ๋ณด๊ด๋ ์ ๋ณด์ ๋ณต์ฌ๋ณธ์ ๊ฐ์ ธ์ ๋ฉ์๋์ ์คํ ํ์ ์ค์ฌ์ค
- ๋์ ๋ฉ์๋๊ฐ ์คํ๋ ๋๋ง๋ค ์ถ์ํ๊ฐ ํด๋น ๋ฉ์๋๊ฐ ๊ฐ์ ์ธ์๋ก ์ด๋ฏธ ์คํ๋์๋์ง ํ์ธํ๋ ์บ์ฑ ๋์์ ์ ์ฉ
- ํด๋น ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ค๋ฉด ์ค์ ๋ฉ์๋๋ฅผ ์คํํ์ง ์๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ณ ์กด์ฌํ๋ค๋ฉด ๋ฉ์๋๋ฅผ ์คํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ ํ, ์ฌ์ฉ์์๊ฒ ๋ฐํํด์ ๋ค์ ๋ฒ ํธ์ถ ์์ ์ฌ์ฉํ ์ ์๊ฒ ํจ
โ ์ฌ์ฉ๋ฒ
- xml ํ์ผ์ ๋ง๋ค์ด ์์ฑ๋ค์ ์ง์
- Configuration ํด๋์ค ํ์ผ์ ๋ง๋ค์ด CacheManager ๋น์ EhCacheManager ํด๋์ค๋ฅผ ๋งคํ
- ํด๋น ๋งค๋์ ๊ฐ xml ํ์ผ์ ์์ฑ๋ค์ ๊ฐ์ง๊ฒ ๋ง๋ค๊ธฐ
ehcache.xml ํ์ผ ์ค์ ๋ฐฉ๋ฒ
<ehcache>
<defaultCache // ๋ํดํธ ์ค์ ๊ฐ
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="1200"
timeToLiveSeconds="1200"
diskExpiryThreadIntervalSeconds="1200"
memoryStoreEvictionPolicy="LRU"/>
<cache // ํ๋์ ์บ์๋ง ์ง์
name="exampleCache"
maxElementsInMemory="10000"
maxElementsOnDisk="1000"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
memoryStoreEvictionPolicy="LFU"/>
</ehcache>
์ ์ฝ๋๋ ehcache.xml ํ์ผ ์ค์ ์์์ ๋๋ค.
์ฌ์ง์ < defaultCache > ํ๊ทธ๋ ๋ฐ๋์ ์กด์ฌํด์ผํ๋ ํ๊ทธ๋ก,
์ฝ๋์์ ์บ์๋ฅผ ์ง์ ์์ฑํ ๋ ์ฌ์ฉ๋๋ ์บ์์ ๊ธฐ๋ณธ ์ค์ ๊ฐ์ ์ ์ฅํฉ๋๋ค.
ํ๋์ ์บ์๋ฅผ ์ง์ ํ ๊ฒฝ์ฐ์๋ < cache > ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
์ ehcache.xml ์ฝ๋์ ์ฌ์ฉ๋ ์์ฑ๋ค์ ์ดํด๋ณด์๋ฉด,
- name (ํ์)
โ ์บ์์ ์ด๋ฆ
โ - maxElementsInMemory (ํ์)
โ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ์ ์๋ ๊ฐ์ฒด์ ์ต๋ ๊ฐ์
โ - eternal (ํ์)
โ ์ด ๊ฐ์ด true์ด๋ฉด timeout ๊ด๋ จ ์ค์ ์ ๋ฌด์๋๊ณ , Element๊ฐ ์บ์์์ ์ญ์ ๋์ง ์์
โ - overflowToDisk (ํ์)
โ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๊ฐ์ฒด ๊ฐ์๊ฐ maxElementsInMemory์์ ์ง์ ํ ๊ฐ์ ๋ค๋ค๋ฅผ ๊ฒฝ์ฐ ๋์คํฌ์ ์ค๋ฒํ๋ก์ฐ ๋๋ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์ง ์ฌ๋ถ
โ - timeToIdleSeconds (์ ํ)
โ Element๊ฐ ์ง์ ํ ์๊ฐ ๋์ ์ฌ์ฉ(์กฐํ)๋์ง ์์ผ๋ฉด ์บ์์์ ์ ๊ฑฐ๋จ
โ ์ด ๊ฐ์ด 0์ธ ๊ฒฝ์ฐ ์กฐํ ๊ด๋ จ ๋ง๋ฃ ์๊ฐ์ ์ง์ ํ์ง ์์ ( ๊ธฐ๋ณธ๊ฐ - 0 )
โ - timeToLiveSeconds (์ ํ)
โ Element๊ฐ ์กด์ฌํ๋ ์๊ฐ
โ ์ด ์๊ฐ์ด ์ง๋๋ฉด ์บ์์์ ์ ๊ฑฐ๋จ
โ ์ด ์๊ฐ์ด 0์ด๋ฉด ๋ง๋ฃ ์๊ฐ์ ์ง์ ํ์ง ์์ ( ๊ธฐ๋ณธ๊ฐ - 0 )
โ - maxElementsOnDisk (์ ํ)
โ ๋์คํฌ์ ์ ์ฅ๋ ์ ์๋ ๊ฐ์ฒด์ ์ต๋ ๊ฐ์
โ - diskPersistent (์ ํ)
โ VM์ด ์ฌ ๊ฐ๋ํ ๋ ๋์คํฌ ์ ์ฅ์์ ์บ์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ ์ง ์ฌ๋ถ
( ๊ธฐ๋ณธ๊ฐ - false )
โ โ - diskExpiryThreadIntervalSeconds (์ ํ)
โ Disk Expiry ์ฐ๋ ๋์ ์ํ ์๊ฐ ๊ฐ๊ฒฉ์ ์ด ๋จ์๋ก ์ง์
( ๊ธฐ๋ณธ๊ฐ - 120 )
โ - memoryStoreEvictionPolicy (์ ํ)
โ ๊ฐ์ฒด์ ๊ฐ์๊ฐ maxElementsInMemory์ ๋๋ฌํ์ ๋, ๋ฉ๋ชจ๋ฆฌ์์ ๊ฐ์ฒด๋ฅผ ์ด๋ป๊ฒ ์ ๊ฑฐํ ์ง์ ๋ํ ์ ์ฑ ์ง์
โ ๊ธฐ๋ณธ๊ฐ์ LRU ( FIFO์ LFU๋ ์ง์ ๊ฐ๋ฅ )
โ LRU ์๊ณ ๋ฆฌ์ฆ
โ ํ์ด์ง ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋
โ ๊ฐ์ฅ ์ค๋ซ๋์ ์ฐธ์กฐ๋์ง ์์ ํ์ด์ง๋ฅผ ๊ต์ฒดํ๋ ๊ธฐ๋ฒ
[์ฐธ๊ณ ] https://j2wooooo.tistory.com/121
[์ฐธ๊ณ ] https://kimyhcj.tistory.com/253
( ๋ณธ ๊ฒ์๋ฌผ์ 2023/04/24์ ์์ฑํ ๊ธ์ ์ฎ๊ธด ๊ธ์ ๋๋ค. ์๋ฌธ์ ์๊ธฐ์ ์์! )
728x90
๋ฐ์ํ