Ignite缓存管理初体验:ignite服务端配置,大家可以用参考官方进行配置(或者使用默认配置也可以)。

本文中的ignite使用版本是1.7,与spring结合使用。
maven依赖配置

ignite 客户端配置

 <property name="clientMode" value="true"><!--声明为客户端-->

    <!-- Explicitly configure TCP discovery SPI to provide list of initial nodes. -->
<property name="discoverySpi">
<bean class="org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi">
<property name="ipFinder">
<!--
Ignite provides several options for automatic discovery that can be used
instead os static IP based discovery. For information on all options refer
to our documentation: https://apacheignite.readme.io/docs/cluster-config
-->
<!-- Uncomment static IP finder to enable static-based discovery of initial nodes. -->
<!--<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.vm.TcpDiscoveryVmIpFinder">-->
<bean class="org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder">
<property name="addresses">
<list>
<!-- In distributed environment, replace with actual host IP address. -->
<value>${ignite.serverIp}</value><!--服务端IP地址-->
</list>
</property>
</bean>
</property>
</bean>
</property>
<property name="communicationSpi">
<bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi">
<property name="localPort" value="${ignite.communication.localport}"><!--对接服务端端口-->
<property name="localAddress" value="192.168.1.93"><!--ignite客户端链接地址(适用多网卡情况)-->
</property></property></bean>
</property> </property>

igniteService代码(interface实现缓存存储,供应用调用)

@原码
public interface IgniteCacheApplication { /**
*设置系统对象
*/
public boolean putIgniteCache(String parentName,String name,Object value,Long expiry);
/**
*获取系统对象
*/
public Object getIgniteCache(String parentName,String name); /**
*移除系统对象
*/
public boolean removeIgniteCache(String parentName,String name);
/**
*清空系统对象
*/
public boolean clearIgniteCacheByName(String parentName,String name);
/**
*清空系统缓存
*/
public void clearIgniteCache();
/**
*销毁缓存对象
*/
public void destroyCache(String parentName);

@实现类原码

@Service(“cacheServiceImpl”)
public class IgniteCacheServiceImpl implements CacheApplication,InitializingBean {

private static final Logger logger = Logger.getLogger(IgniteCacheServiceImpl.class);

public static Ignite ignite ;

@Autowired
private IgniteConfiguration cfg; @SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public boolean putIgniteCache(String parentName, String name, Object value, Long expiry) {
boolean flag=true;
try {
CacheConfiguration cacheCfg = new CacheConfiguration();
if(StringUtils.isEmpty(name)){
return false;
}
if(!StringUtils.isEmpty(expiry)){
cacheCfg.setExpiryPolicyFactory(CreatedExpiryPolicy.factoryOf(new Duration(TimeUnit.SECONDS, expiry)));
}
cacheCfg.setName(parentName);
cacheCfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
IgniteCache<string, object=""> cache = ignite.getOrCreateCache(cacheCfg);
cache.put(name, value);
CacheConstant.igniteStatus="normal";
} catch (CacheException e) {
if (e.getCause() instanceof IgniteClientDisconnectedException) {
IgniteClientDisconnectedException cause =
(IgniteClientDisconnectedException)e.getCause();
cause.reconnectFuture().get(); // Wait for reconnect.
logger.error("ignite Wait for reconnect",e);
CacheConstant.igniteStatus="death";
flag=false;
}else{
e.printStackTrace();
logger.error("ignite cache Exception errorInfo:"+e.getMessage(),e);
CacheConstant.igniteStatus="death";
flag=false;
}
} catch (Exception e) {
e.printStackTrace();
logger.error("添加ignite对象缓存异常 param{"+parentName+","+name+"},errorInfo:"+e.getMessage(),e);
CacheConstant.igniteStatus="death";
flag=false;
}
return flag;
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public Object getIgniteCache(String parentName, String name) {
try {
CacheConfiguration cacheCfg = new CacheConfiguration();
if(StringUtils.isEmpty(name)){
return false;
}
cacheCfg.setName(parentName);
cacheCfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
IgniteCache<string, object=""> cache = ignite.getOrCreateCache(cacheCfg);
CacheConstant.igniteStatus="normal";
return cache.get(name);
} catch (CacheException e) {
if (e.getCause() instanceof IgniteClientDisconnectedException) {
IgniteClientDisconnectedException cause =
(IgniteClientDisconnectedException)e.getCause();
cause.reconnectFuture().get(); // Wait for reconnect.
logger.error("ignite Wait for reconnect",e);
CacheConstant.igniteStatus="death";
return null;
}else{
e.printStackTrace();
logger.error("ignite cache Exception errorInfo:"+e.getMessage(),e);
CacheConstant.igniteStatus="death";
return null;
}
} catch (Exception e) {
e.printStackTrace();
logger.error("获取ignite对象缓存异常 param{"+parentName+","+name+"},errorInfo:"+e.getMessage(),e);
CacheConstant.igniteStatus="death";
return null;
}
}
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public boolean removeIgniteCache(String parentName, String name) {
try {
CacheConfiguration cacheCfg = new CacheConfiguration();
if(StringUtils.isEmpty(name)){
return false;
}
cacheCfg.setName(parentName);
cacheCfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
IgniteCache<string, object=""> cache = ignite.getOrCreateCache(cacheCfg);
boolean flag = cache.remove(name);
CacheConstant.igniteStatus="normal";
return flag;
} catch (CacheException e) {
if (e.getCause() instanceof IgniteClientDisconnectedException) {
IgniteClientDisconnectedException cause =
(IgniteClientDisconnectedException)e.getCause();
cause.reconnectFuture().get(); // Wait for reconnect.
logger.error("ignite Wait for reconnect",e);
return false;
}else{
e.printStackTrace();
logger.error("ignite cache Exception errorInfo:"+e.getMessage(),e);
CacheConstant.igniteStatus="death";
return false;
}
} catch (Exception e) {
e.printStackTrace();
logger.error("移除ignite对象缓存异常 param{"+parentName+","+name+"},errorInfo:"+e.getMessage(),e);
CacheConstant.igniteStatus="death";
return false;
}
} @SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public boolean clearIgniteCacheByName(String parentName, String name) {
boolean flag=true;
try {
CacheConfiguration cacheCfg = new CacheConfiguration();
cacheCfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
cacheCfg.setName(parentName);
IgniteCache<string, object=""> cache = ignite.getOrCreateCache(cacheCfg);
if(StringUtils.isEmpty(name)){
return false;
}
cache.clear();
CacheConstant.igniteStatus="normal";
} catch (CacheException e) {
if (e.getCause() instanceof IgniteClientDisconnectedException) {
IgniteClientDisconnectedException cause =
(IgniteClientDisconnectedException)e.getCause();
cause.reconnectFuture().get(); // Wait for reconnect.
logger.error("ignite Wait for reconnect",e);
CacheConstant.igniteStatus="death";
return false;
}else{
e.printStackTrace();
logger.error("ignite cache Exception errorInfo:"+e.getMessage(),e);
CacheConstant.igniteStatus="death";
return false;
}
} catch (Exception e) {
e.printStackTrace();
logger.error("清除ignite对象中所有缓存异常 param{"+parentName+","+name+"},errorInfo:"+e.getMessage(),e);
CacheConstant.igniteStatus="death";
flag=false;
}
return flag;
} @Override
public void clearIgniteCache() {
try {
@SuppressWarnings("rawtypes")
CacheConfiguration cacheCfg = new CacheConfiguration();
cacheCfg.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
@SuppressWarnings("unchecked")
IgniteCache<string, object=""> cache = ignite.getOrCreateCache(cacheCfg);
cache.clear();
CacheConstant.igniteStatus="normal";
} catch (CacheException e) {
if (e.getCause() instanceof IgniteClientDisconnectedException) {
IgniteClientDisconnectedException cause =
(IgniteClientDisconnectedException)e.getCause();
cause.reconnectFuture().get(); // Wait for reconnect.
logger.error("ignite Wait for reconnect",e);
CacheConstant.igniteStatus="death";
}else{
e.printStackTrace();
logger.error("ignite cache Exception errorInfo:"+e.getMessage(),e);
CacheConstant.igniteStatus="death";
}
} catch (Exception e) {
e.printStackTrace();
logger.error("清除ignite缓存异常,errorInfo:"+e.getMessage(),e);
CacheConstant.igniteStatus="death";
}
}
/**
*系统启动时,扫描ignite配置,并启动
*/
@Override
public void afterPropertiesSet() throws Exception {
startIgnite();
}
public void setCfg(IgniteConfiguration cfg) {
this.cfg = cfg;
} public void startIgnite(){
logger.info("starting ignite ...");
ignite = Ignition.start(cfg);
logger.info("started ignite ...");
}
@Override
public void destroyCache(String parentName) {
try {
ignite.destroyCache(parentName);
CacheConstant.igniteStatus="normal";
} catch (CacheException e) {
if (e.getCause() instanceof IgniteClientDisconnectedException) {
IgniteClientDisconnectedException cause =
(IgniteClientDisconnectedException)e.getCause();
cause.reconnectFuture().get(); // Wait for reconnect.
logger.error("ignite Wait for reconnect",e);
CacheConstant.igniteStatus="death";
}else{
e.printStackTrace();
logger.error("ignite cache Exception errorInfo:"+e.getMessage(),e);
CacheConstant.igniteStatus="death";
}
} catch (Exception e) {
e.printStackTrace();
logger.error("清除ignite缓存异常,errorInfo:"+e.getMessage(),e);
CacheConstant.igniteStatus="death";
}
}
</string,></string,></string,></string,></string,>

最新文章

  1. 【用户交互】APP没有退出前台但改变系统属性如何实时更新UI?监听系统广播,让用户交互更舒心~
  2. vi 使用
  3. JSP编程-步步为营
  4. java performance
  5. MVC 增加手机站
  6. Android 自定义对话框使用静态Handler传递参数
  7. MyEclipse启动时报 Unable to acquire application service. Ensure that the org.eclips
  8. nmon的安装与使用
  9. Struts2实现国际化
  10. [转]理解SSL(https)中的对称加密与非对称加密
  11. nginx重启几种方法
  12. 在ASP.NET Core中获取客户端IP地址
  13. Laravel使用redis保存SESSION
  14. 未在本地计算机上注册microsoft.ace.12.0的解决办法
  15. vue加载本地json文件
  16. hadoop 有那些发行版本
  17. The attribute required is undefined for the annotation type XmlElementRef
  18. Oracle管理监控之sqlplus实现上下翻页设置
  19. 数据库优化之SQL语句优化-记录
  20. python---CRM用户关系管理

热门文章

  1. linux 短信收发
  2. SpringBoot资源国际化
  3. SpringBoot使用maven构建
  4. Linux环境PHP7.0.2安装
  5. 查看win10的激活信息和版本号
  6. Deep learning for Human Strategic Behaviour
  7. Spring Framework 官方文档学习(三)之Resource
  8. 阿里Java开发手冊之编程规约
  9. MySQL的innodb_flush_log_at_trx_commit配置值的设定
  10. ThinkPHP项目笔记之模板篇