JCache 提供程序 NCache

NCache 作为分布式 JCache 提供程序,它允许 Java 应用程序利用符合 JSR 107 标准的缓存来消除数据库瓶颈并实现水平扩展。JCache 是一个基于 Java 的 API,用于 Java 对象的内存缓存。它还包括对象的创建、失效、缓存缓存的临时存储、跨 Java 虚拟机 (JVM) 的共享访问和一致性。

NCache 是一个非常强大且通用的分布式缓存解决方案,带有大量的功能和工具。 NCache 提供 JSR 107 规范的高性能实现,确保与需要亚毫秒级延迟的分布式缓存的 Java 应用程序完全兼容。通过利用此实现,您可以集成 NCache将企业级功能无缝集成到符合 JCache 标准的环境中,而不会造成架构上的冲突。

如何在 JCache 中初始化实例? 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");

JCache 支持哪些基本操作? NCache?

成功初始化缓存并获得缓存句柄后,您可以对缓存执行许多操作,例如 添加, 正在取得, 更新删除 缓存中的数据。

下面的代码示例演示了如何使用缓存实例(您在上面的代码示例中创建)对缓存执行基本操作。

/*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 如何管理数据过期? NCache?

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 监听器监控缓存事件

缓存级别通知 是在某些注册事件发生时触发的一般事件。 为了从 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);

运用 NCache API

提供的API NCache 与 JCache 提供的 API 相比,为您提供更强大的特性和功能。 其中的一些功能 NCache 提供但 JCache 不提供如下:

其中一些功能 NCache 提供但 JCache 不提供如下:

特性 标准 JCache (JSR 107) NCache JCache 提供程序
搜索 仅限密钥 SQL 和 LINQ 查询
数据标签 不支持 通过 unwrap 提供支持
坚持 基础版 阅读/书写
缩放 受 JV​​M 限制 线性可扩展集群

为了使用由 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);

接下来做什么?

常见问题

此 NCache JCache Provider 是 JSR 107 (JCache) 规范的 100% 兼容实现。它允许 Java 开发人员使用标准化的缓存 API,同时受益于…… NCache的分布式架构,确保 Java 应用程序的高可用性和线性可扩展性。

迁移很简单,因为 NCache 严格遵循 JSR 107 标准。您只需包含以下内容: NCache 将 JCache jar 文件添加到您的项目中并进行配置 缓存提供程序 指向你的 NCache 集群。基本缓存操作无需修改任何专有代码。

是的。 NCache 完全实现了 JSR 107 ExpiryPolicy(包括绝对过期和滑动过期)和 CacheEntryListener 接口。这确保了从本地缓存迁移到云端时,您的缓存驱逐逻辑和事件驱动工作流保持一致。 NCache 分布式集群。

是的。通过使用 javax.cache.Cache.unwrap 通过该方法,您可以访问底层 NCache API。这实现了标准 JSR 107 规范中没有的高级功能,例如类似 SQL 的查询、项目标记和数据库同步。

当然。 NCache 为 Spring Cache 和 Hibernate 二级缓存 (L2) 提供专用的提供程序,并利用 JCache 标准。这使得它们能够无缝集成到企业级 Java 框架中,从而降低数据库负载并缩短响应时间。

联系我们

联系电话

+1 214-619-2601 (美国)

+44 20 7993 8327 (英国)

©版权所有 Alachisoft 2002 - 版权所有。 NCache 是 Diyatech Corp. 的注册商标。