JCache는 Java 개체의 메모리 캐싱에 사용되는 Java 기반 API입니다. 여기에는 객체 생성, 무효화, 스풀링, 공유 액세스 및 JVM(Java Virtual Machine) 간의 일관성도 포함됩니다.
NCache 광범위한 기능 및 도구 세트와 함께 제공되는 매우 강력하고 다재다능한 분산 캐싱 솔루션입니다. NCache JCache(JSR 107) 사양의 구현을 제공합니다. 이를 사용하면 에서 제공하는 수많은 기능과 도구의 이점을 얻을 수 있습니다. NCache.
캐시에서 작업을 수행하려면 JCache 인스턴스를 생성해야 합니다. Java에서 getCache() 메서드는 JCache 인스턴스를 가져오는 가장 편리한 메서드 중 하나로 간주됩니다. 다음 코드 예제는 이 메서드를 사용하여 캐시를 초기화하는 방법을 보여줍니다.
/*Create an instance of JCache's caching provider to get JCacheManager's instance */
CachingProvider provider = Caching.getCachingProvider();
CacheManager manager = provider.getCacheManager();
/*Get a cache from manager via its string name.*/
javax.cache.Cache jCache = manager.getCache("myreplicatedcache");
캐시가 성공적으로 초기화되고 캐시 핸들을 얻은 후에는 캐시에서 다음과 같은 많은 작업을 수행할 수 있습니다. 첨가, 가져 오는 중, 업데이트및 삭제 중 캐시의 데이터.
다음 코드 예제는 캐시 인스턴스(위의 코드 예제에서 만든)를 사용하여 캐시에서 기본 작업을 수행하는 방법을 보여줍니다.
/*Adding data to the cache*/
Product product = fetchProductFromDB();
String key = "Product:" + product.getProductID();
jCache.put(key, product);
/*Update data in the cache*/
product.setUnitsInStock(newValue); // updated units
jCache.replace(key, product);
/*Get data from the cache*/
Object item = jCache.get(key);
/*Remove data from the cache*/
Boolean result = jCache.remove(key);
JCache의 또 다른 기능은 데이터 만료 여기서 캐시 데이터는 시간을 기준으로 만료됩니다. JCache는 두 가지 주요 유형의 만료를 지원합니다. 절대 만료 과 슬라이딩 만료. 절대 만료에서는 캐시 내의 데이터가 고정된 시간 간격 후에 만료됩니다. 슬라이딩 만료에서 캐시 내의 데이터는 시간 간격 후에 만료되지만 이 시간 간격은 이 데이터에 액세스할 때마다 재설정됩니다.
절대 및 슬라이딩 만료가 정의된 캐시에서 항목을 추가하고 업데이트할 수 있습니다. 다음 코드 예제에서 데이터는 절대 만료가 정의된 캐시에 추가됩니다.
CachingProvider cachingProvider = Caching.getCachingProvider();
CacheManager manager = cachingProvider.getCacheManager();
Customer customer = new Customer();
customer.setAge(22);
String key = "Customer:" + customer.getCustomerID();
//configure the expiration duration
CompleteConfiguration<Object, Object> cacheConfig = new MutableConfiguration().setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(Duration.ONE_MINUTE));
//create cache with customized configuration settings
javax.cache.Cache jCache = manager.createCache("mypartitionedcache", cacheConfig);
//add item to cache which will expire after 1 minute
jCache.put(key, customer);
캐시 수준 알림 등록된 특정 이벤트가 발생할 때 트리거되는 일반 이벤트입니다. JCache에서 이벤트 알림을 받으려면 관련 이벤트 관련 인터페이스를 구현해야 합니다.
아래 예에서는 이벤트 필터 팩터리를 구현했다고 가정합니다.
// class that implements the event-listener factory
public class MyCacheEntryListener<K, V>
implements CacheEntryCreatedListener<K, V>, Serializable
{...
for (CacheEntryEvent<? extends K,? extends V> event: events)
{
System.out.println("Received a " + event);
}
...
}
...
//configuring
MyCacheEntryListener<String,String> m_listener = new MyCacheEntryListener<String,String>();
MutableConfiguration<String, String> config = new MutableConfiguration<String, String>();
config.setTypes(String.class, String.class).addCacheEntryListenerConfiguration(
new MutableCacheEntryListenerConfiguration<String, String>
(FactoryBuilder.factoryOf(m_listener),FactoryBuilder.factoryOf(
new MyCacheEntryEventFilter<String, String>()),true,true));
Cache<String, String> jCache = cacheManager.createCache("myreplicatedcache", config);
에서 제공하는 API NCache JCache에서 제공하는 API보다 더 강력한 기능을 제공합니다. 일부 기능은 NCache 제공하지만 JCache가 제공하지 않는 경우는 다음과 같습니다.
에서 제공하는 이 모든 기능을 사용하려면 NCache API 캐시 인스턴스가 있어야 합니다.
다음 코드 예제는 JCache API를 사용하여 캐시 인스턴스를 가져오는 방법을 보여줍니다. NCache unwrap 방법을 사용하여. 이 인스턴스는 다음을 사용하여 캐시에 데이터를 추가하는 데 사용됩니다. 태그 (의 특징 NCache) 활성화. 이러한 태그는 나중에 캐시에서 데이터를 검색하기 위해 키 대신 사용할 수 있습니다.
...
com.alachisoft.ncache.client.Cache cache = null;
cache = (com.alachisoft.ncache.client.Cache) jCache.unwrap(com.alachisoft.ncache.client.Cache.class);
Customer customer = fetchCustomer();
String customerKey = “Customer” + customer.getCustomerID();
// Specify Tags
List<Tag> tags = List.of(new Tag("East Coast Customers"));
CacheItem cacheItem = new CacheItem(customer);
cacheItem.setTags(tags);
cache.add(customerKey, cacheItem);