Ignite缓存管理初体验
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,>
Ignite缓存管理初体验的更多相关文章
- 图数据库HugeGraph:HugeGraph-Hubble基于Web的可视化图管理初体验
原创/朱季谦 一.HugeGraph-Hubble简介 关于HugeGraph,官方资料是这样介绍的,它是一款易用.高效.通用的开源图数据库系统(Graph Database), 实现了 Apache ...
- Spring boot缓存初体验
spring boot缓存初体验 1.项目搭建 使用MySQL作为数据库,spring boot集成mybatis来操作数据库,所以在使用springboot的cache组件时,需要先搭建一个简单的s ...
- Ignite缓存大小管理
Ignite使用计算机内存存储缓存数据,达到提升缓存读写性能的.但是计算机内存往往是有限的,我们必须合理管理Ignite对内存的使用. Ignite可以使用JVM堆外内存和堆内内存.使用堆外内存基本上 ...
- Helm Template初体验,方便管理多环境
我最新最全的文章都在南瓜慢说 www.pkslow.com,文章更新也只在官网,欢迎大家来喝茶~~ 1 简介 Helm作为一个优秀的包管理器,这部分我们之前已经做了介绍,文章如下: 用Helm部署Ku ...
- 五、MyBatis缓存初体验
缓存就是内存中的数据,常常来自对数据库查询结果的保存,使用缓存, 我们可以避免频繁的与数据库进行交互, 进而提高响应速度. 一级缓存初体验(session,默认打开) 同一查询执行两次以上:selec ...
- Bower管理依赖库初体验
比如一开始我用了jquery-1.10.2.min.js,后来要用bootstrap,但bootstrap依赖的确实2.0.3版本的jquery,那又要下载一个去替换原来的,这样的事情发生多了就会觉得 ...
- Spring之初体验
Spring之初体验 Spring是一个轻量级的Java Web开发框架,以IoC(Inverse of Control 控制反转)和 ...
- node.js 初体验
node.js 初体验 2011-10-31 22:56 by 聂微东, 174545 阅读, 118 评论, 收藏, 编辑 PS: ~ 此篇文章的进阶内容在为<Nodejs初阶之express ...
- grunt 构建工具(build tool)初体验
操作环境:win8 系统,建议使用 git bash (window下的命令行工具) 1,安装node.js 官网下载:https://nodejs.org/ 直接点击install ,会根据你的操 ...
随机推荐
- Scala中集合类型与java中集合类型转换
对于java中的集合元素并不能在scala中拿来就用的,需要进行相应的转换. 1. 转换规则如下 从下面可以看出,有些可以相互转换的,有些只能单向转换: scala.collection.Iterab ...
- 在linux 列出 超级用户 普通用户和 系统用户
#!/bin/bash echo Please select which list you want to print echo "1. admin (enter 1)" echo ...
- java 包 和 物理目录 解惑
今天做 JUnit 实验, 发现在物理实际不同的目录(src, testsrc)下可以使用相同的包名, 并且在这两个目录下, 都有个子目录 coolUnit (这个子目录是配合 package 使用的 ...
- jquery mobile小经验
现在网站上关于jquery mobile的demo和帖子可真少啊,我刚开始接触,遇到了一些问题,都找不到人请教. 这是我的个人经验总结,或多或少会对刚入门的童鞋有点帮助吧. 如果想一开始进入页面的时候 ...
- 从此sudo不再输密码
#sudo visudo 最后一次输入密码. 在最后一行加入: xxx ALL=NOPASSWD: ALL xxx即为你当前使用的用户名,Ctrl+X,保存退出. 从此告别每次都要输密码的时代.
- NANDflash和NORflash的区别(设计师在使用闪存时需要慎重选择)
NANDflash和NORflash的区别(设计师在使用闪存时需要慎重选择) NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底 ...
- jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
本文实例讲述了jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法.分享给大家供大家参考.具体实现方法如下: 这里主要通过val方法设置按钮的文字,并用attr方法修改disabled属性实 ...
- 使用cordova+Ionic+AngularJs进行Hybird App开发的环境搭建手冊
一.所需工具 1,JDK:生成 2.安卓SDK开发环境 3,NodeJs:主要使用的还是npm 4,Python开发环境 5.VS 2012(2008,2015也能够,已亲測):安装这个主要是须要一些 ...
- SmartGit Mac、Liunx、Windows过期后破解方法
根据自己的操作系统,进入相应的文件夹 ,可能还有一个版本号的文件夹,再进入 Windows: %APPDATA%\syntevo\SmartGit\ OS X: ~/Library/Preferenc ...
- vue-router scrollBehavior无效的问题
在使用vue做单页面应用开发时候 使用vue-router作为路由控制器 在使用过程中发现每个页面打开都在原来的位置 不能返回到页面顶部位置 ,然后查看api文档 滚动行为 发现如下代码: con ...