Ehcache, Redis

최형준·2022년 7월 3일
0

스프링의 캐시 추상화

스프링의 캐시 추상화는 캐시 기술에 종속되지 않으며 AOP를 통해 적용되어 애플리케이션 코드 수정하지 않고 캐시 부가 기능을 추가 할 수 있다.
캐시 추상화에서는 캐시 기술을 지원하는 캐시 매니저 빈을 등록.
Redis, Ehcache를 예로 들 수 있다.

Local Caching vs Global Caching

local Cache는 로컬 서버 내주 저장소에 데이터를 보관
서버에서 바로 데이터를 서비스할 수 있기 때문에 속도가 빠르다는 장점.
다중 서버 환경에서는 각 서버에 중복된 데이터를 보관해야하며 서버간 데이터 일관성 보장x
캐싱할 데이터의 양이 많을 경우 부하 커짐

Global Cache는 서버와 분뤼된 별도 저장소에 데이터를 보관
네트워크 I/O가 발생하여 Local캐시보단 속도가 느림.
중복 데이터 및 데이터 일관성 문제가 없다는 장점.

저장 용도 예시
카테고리 정보 조회(Local Caching). 카테고리 정보는 데이터의 양이 많지 않아 중복으로 데이터에 저장이 되더라도 부하가 적으며, 데이터의 일관성이 깨지더라도 비즈니스에 큰 영향x

상품 정보 조회(Global Caching). 상품 정보는 상대적으로 데이터의 양이 많아 중복으로 데이터를 저장하게 되는 경우 자원의 낭비가 심하며 비즈니스 관점에서 일관성이 중요한 데이터 이기 때문.

캐시 설정 xml

<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://ehcache.org/ehcache.xsd"
         maxBytesLocalHeap="300M"
         updateCheck="false">

    <diskStore path="java.io.tmpdir" />
    <sizeOfPolicy maxDepth="100000" maxDepthExceededBehavior="continue"/>

    <defaultCache
            eternal="false"
            timeToIdleSeconds="0"
            timeToLiveSeconds="1200"
            overflowToDisk="false"
            diskPersistent="false"
            diskExpiryThreadIntervalSeconds="120"
            memoryStoreEvictionPolicy="LRU">
    </defaultCache>

    <cache name="LocalCacheData"
           eternal="false"
           timeToIdleSeconds="0"
           timeToLiveSeconds="1200"
           overflowToDisk="false"
           diskPersistent="false"
           diskExpiryThreadIntervalSeconds="120"
           memoryStoreEvictionPolicy="LRU">
    </cache>

    <cache name="testData"
           eternal="false"
           timeToIdleSeconds="0"
           timeToLiveSeconds="100"
           overflowToDisk="false"
           diskPersistent="false"
           memoryStoreEvictionPolicy="LRU">
    </cache>
</ehcache>

이와 같은 방법으로 앞에서 언급했던 ttl, 메모리 사이즈 등 설정할 수 있을 것이다.

추가

EHcache 와 같은 경우 내가 부트캠프를 통해 참여해보며 대충 사용은 해봣다.
그렇기만 redis는 사용해보지 못했으며 우아한redis라며 유투브를 통해 경험 했었는데 이 안에 설정방식부터 엄청나게 복합한 것들이 많았다.. redis 하나 만으로도 몇일이 걸릴거 같다는 생각이 들었다. 지금의 한계는 여기 까지이고 추후 redis에 대해 좀 더 깊이 파보도록 할것이다.

출처: https://velog.io/@qotndus43/Cache

profile
긍정적으로 하루를 살아가자!!

0개의 댓글