public class ArcusCache
extends java.lang.Object
implements org.springframework.cache.Cache, org.springframework.beans.factory.InitializingBean
Arcus의 key 구조는 prefix:subkey 입니다. prefix는 사용자가 그룹으로 생성하고자 하는 subkey들의 집합이며 ArcusCache에서는 서비스 또는 빌드 단계 등의 구분을 위해 serviceId + name으로 정의합니다. serviceCode 속성과 name는 반드시 설정되어야 합니다.
<bean id="operationTranscoderA" class="net.spy.memcached.transcoders.SerializingTranscoder">
<property name="charset" value="UTF-8" />
<property name="compressionThreshold" value="400" />
</bean>
<bean id="operationTranscoderB" class="net.spy.memcached.transcoders.SerializingTranscoder">
<property name="charset" value="UTF-8" />
<property name="compressionThreshold" value="1024" />
</bean>
<bean id="arcusCacheManager" class="org.springframework.cache.support.SimpleCacheManager">
<property name="caches">
<list>
<bean p:name="member" p:timeoutMilliSeconds="500" parent="defaultArcusCache" p:operationTranscoder-ref="operationTranscoderA" />
<bean p:name="memberList" p:expireSeconds="3000" parent="defaultArcusCache" p:operationTranscoder-ref="operationTranscoderB" />
</list>
</property>
</bean>
<bean id="defaultArcusCache" class="com.navercorp.arcus.spring.cache.ArcusCache"
p:arcusClient-ref="arcusClient" p:timeoutMilliSeconds="500"
p:expireSeconds="3000" abstract="true" serviceId="beta-" />
이렇게 설정했을때, 캐시의 키 값으로 생성되는 값은 beta-member:메서드 매개변수로 만든 문자열이 됩니다.
| Constructor and Description |
|---|
ArcusCache() |
| Modifier and Type | Method and Description |
|---|---|
void |
afterPropertiesSet() |
void |
clear() |
java.lang.String |
createArcusKey(java.lang.Object key)
serviceId, prefix, name 값을 사용하여 아커스 키를 생성합니다. serviceId는 필수값이며, prefix 또는
name 둘 중에 하나가 반드시 있어야 합니다. name과 prefix값이 모두 있다면 prefix 값을 사용합니다.
|
void |
evict(java.lang.Object key) |
org.springframework.cache.Cache.ValueWrapper |
get(java.lang.Object key) |
<T> T |
get(java.lang.Object key,
java.util.concurrent.Callable<T> valueLoader) |
<T> T |
get(java.lang.Object key,
java.lang.Class<T> type) |
net.spy.memcached.ArcusClientPool |
getArcusClient() |
int |
getExpireSeconds() |
KeyLockProvider |
getKeyLockProvider() |
java.lang.String |
getName() |
java.lang.Object |
getNativeCache() |
net.spy.memcached.transcoders.Transcoder<java.lang.Object> |
getOperationTranscoder() |
java.lang.String |
getPrefix() |
java.lang.String |
getServiceId() |
long |
getTimeoutMilliSeconds() |
boolean |
isWantToGetException()
Deprecated.
|
void |
put(java.lang.Object key,
java.lang.Object value) |
org.springframework.cache.Cache.ValueWrapper |
putIfAbsent(java.lang.Object key,
java.lang.Object value) |
void |
setArcusClient(net.spy.memcached.ArcusClientPool arcusClient) |
void |
setExpireSeconds(int expireSeconds) |
void |
setKeyLockProvider(KeyLockProvider keyLockProvider) |
void |
setName(java.lang.String name) |
void |
setOperationTranscoder(net.spy.memcached.transcoders.Transcoder<java.lang.Object> operationTranscoder) |
void |
setPrefix(java.lang.String prefix) |
void |
setServiceId(java.lang.String serviceId) |
void |
setTimeoutMilliSeconds(long timeoutMilliseconds) |
void |
setWantToGetException(boolean wantToGetException)
Deprecated.
|
public java.lang.String getName()
getName in interface org.springframework.cache.Cachepublic java.lang.Object getNativeCache()
getNativeCache in interface org.springframework.cache.Cachepublic org.springframework.cache.Cache.ValueWrapper get(java.lang.Object key)
get in interface org.springframework.cache.Cachepublic <T> T get(java.lang.Object key,
java.lang.Class<T> type)
get in interface org.springframework.cache.Cachepublic <T> T get(java.lang.Object key,
java.util.concurrent.Callable<T> valueLoader)
get in interface org.springframework.cache.Cachepublic void put(java.lang.Object key,
java.lang.Object value)
put in interface org.springframework.cache.Cachepublic org.springframework.cache.Cache.ValueWrapper putIfAbsent(java.lang.Object key,
java.lang.Object value)
putIfAbsent in interface org.springframework.cache.Cachekey - keyvalue - valuepublic void evict(java.lang.Object key)
evict in interface org.springframework.cache.Cachepublic void clear()
clear in interface org.springframework.cache.Cachepublic java.lang.String createArcusKey(java.lang.Object key)
키 생성 로직은 다음과 같습니다.
serviceId + (prefix | name) + ":" + key.toString();
만약 전체 키의 길이가 250자를 넘을 경우에는 key.toString() 대신 그 값을 MD5로 압축한 값을 사용합니다.
key - keypublic void setName(java.lang.String name)
public void setExpireSeconds(int expireSeconds)
public void setTimeoutMilliSeconds(long timeoutMilliseconds)
public void setArcusClient(net.spy.memcached.ArcusClientPool arcusClient)
public void afterPropertiesSet()
throws java.lang.Exception
afterPropertiesSet in interface org.springframework.beans.factory.InitializingBeanjava.lang.Exceptionpublic java.lang.String getServiceId()
public void setServiceId(java.lang.String serviceId)
@Deprecated public boolean isWantToGetException()
@Deprecated public void setWantToGetException(boolean wantToGetException)
public int getExpireSeconds()
public long getTimeoutMilliSeconds()
public net.spy.memcached.ArcusClientPool getArcusClient()
public net.spy.memcached.transcoders.Transcoder<java.lang.Object> getOperationTranscoder()
public void setOperationTranscoder(net.spy.memcached.transcoders.Transcoder<java.lang.Object> operationTranscoder)
public java.lang.String getPrefix()
public void setPrefix(java.lang.String prefix)
public KeyLockProvider getKeyLockProvider()
public void setKeyLockProvider(KeyLockProvider keyLockProvider)
Copyright © 2021. All Rights Reserved.