java项目中redis的配置好工具方法

配置文件对redis的配置:

#REDIS_CONFIG
redis.sentinels = x.x.x.x:p,x.x.x.x:p,x.x.x.x:p

redis.sentinel.master = redis-master
redis.password = password
redispool.maxtotal = 6000
redispool.maxidle = 300
redispool.maxwaitmillis = 10000
redispool.timeout = 100

#redis单机配置
redis.pool.host=127.0.0.1
redis.pool.port=6379
#最大能够保持idel状态的对象数
redis.pool.maxIdle=100
#最大分配的对象数
redis.pool.maxTotal=6000
#等待可用连接的最大时间,单位是毫秒,默认值为-1,表示永不超时。
#如果超过等待时间,则直接抛出JedisConnectionException
redis.pool.maxWaitMillis=10000
redis.pool.timeOut=20
#多长时间检查一次连接池中空闲的连接
redis.pool.timeBetweenEvictionRunsMillis=30000
#空闲连接多长时间后会被收回
redis.pool.minEvictableIdleTimeMillis=30000
#当调用borrow Object方法时,是否进行有效性检查
#在borrow(用)一个jedis实例时,是否提前进行validate(验证)操作;
#如果为true,则得到的jedis实例均是可用的
redis.pool.testOnBorrow=true
########reids编码格式
redis.encode=utf-8
######缓存过期时间 秒  1000*60*60*24*7 七天
redis.expire=604800000
####是否开启Redis服务应用
redis.unlock=false

#redis.sentinel.host1=127.0.0.1
#redis.sentinel.port1=26379
#
#redis.sentinel.host2=127.0.0.1
#redis.sentinel.port2=26479
#
#redis.pool.maxTotal=1024
#redis.pool.maxIdle=200
#redis.pool.maxWaitMillis=1000
#redis.pool.testOnBorrow=true
#
#redis.pool.timeBetweenEvictionRunsMillis=30000
#redis.pool.minEvictableIdleTimeMillis=30000
#redis.pool.softMinEvictableIdleTimeMillis=10000
#redis.pool.numTestsPerEvictionRun=1024
#
##1000*60*60*1
#redis.pool.expire=3600000
#redis.pool.unlock=false

  Redis工具类的实现:

package com.base.redis;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.base.utils.CalendarUtil;
import com.base.utils.DateUtils;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.petrochina.dao.BaseStockHlradioMapper;
import com.petrochina.pojo.BaseProvincialArea;
import com.petrochina.pojo.BaseStockHlradio;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisSentinelPool;

import javax.annotation.Resource;
import javax.swing.*;
import java.util.*;

/**
 * Explain:Redis连接池
 */
public final class RedisUtil {
    //========================================================================================//
    //##                                    单机配置                                      ##//
    //========================================================================================//
    //Redis服务器IP
//    private static String ADDR = "127.0.0.1";
//    private static String ADDR = res.getString("redis.pool.host");
//    //Redis的端口号
//    private static Integer PORT = Integer.parseInt(res.getString("redis.pool.port"));
//    //访问密码
//    private static String AUTH = "";
//
//    //可用连接实例的最大数目,默认为8;
//    //如果赋值为-1,则表示不限制,如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)
//    private static Integer MAX_TOTAL = Integer.parseInt(res.getString("redis.pool.maxTotal"));
//    //控制一个pool最多有多少个状态为idle(空闲)的jedis实例,默认值是8
//    private static Integer MAX_IDLE = Integer.parseInt(res.getString("redis.pool.maxIdle"));
//    //等待可用连接的最大时间,单位是毫秒,默认值为-1,表示永不超时。
//    //如果超过等待时间,则直接抛出JedisConnectionException
//    private static Integer MAX_WAIT_MILLIS = Integer.parseInt(res.getString("redis.pool.maxWaitMillis"));
//    private static Integer TIMEOUT = Integer.parseInt(res.getString("redis.pool.timeOut"));
//    //在borrow(用)一个jedis实例时,是否提前进行validate(验证)操作;
//    //如果为true,则得到的jedis实例均是可用的
//    private static Boolean TEST_ON_BORROW = Boolean.valueOf(res.getString("redis.pool.testOnBorrow"));
//    private  static JedisPool jedisPool = null;

	private static ResourceBundle res = ResourceBundle.getBundle("redis");
	private static Logger log = Logger.getLogger(RedisUtil.class);
    private static String password;
    private static JedisSentinelPool jedisPool;
    static {
        try{
            String[] servers = res.getString("redis.sentinels").split(",");
            int maxtotal = Integer.parseInt(res.getString("redispool.maxtotal"));
            int maxidle = Integer.parseInt(res.getString("redispool.maxidle"));
            int maxwaitmillis = Integer.parseInt(res.getString("redispool.maxwaitmillis"));
            int timeout = Integer.parseInt(res.getString("redispool.timeout"));

            long timeBetweenEvictionRunsMillis = Long.valueOf(res.getString("redis.pool.timeBetweenEvictionRunsMillis"));
            long minEvictableIdleTimeMillis = Long.valueOf(res.getString("redis.pool.minEvictableIdleTimeMillis"));

            String sentinelmaster = res.getString("redis.sentinel.master");
            password = res.getString("redis.password");

            Set<String> sentinels = new HashSet<>(16);
            for (String server:servers) {
                sentinels.add(server);
            }

            GenericObjectPoolConfig config = new GenericObjectPoolConfig();
            config.setMaxTotal(maxtotal);
            config.setMaxIdle(maxidle);
            config.setMaxWaitMillis(maxwaitmillis);
            config.setTestOnBorrow(false);
            config.setTestOnReturn(false);

            config.setTestWhileIdle(true);
            config.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
            config.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);

            //setinel客户端提供了master自动发现功能
            jedisPool = new JedisSentinelPool(sentinelmaster,sentinels,config,timeout,password);
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    /**
     * 获取Jedis实例
     * @return
     */
    public static Jedis getJedis(){
        long seconds = System.currentTimeMillis();
        try {
            if(jedisPool != null){
                Jedis jedis = jedisPool.getResource();
                return jedis;
            }else{
                return null;
            }
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }

    public static void returnResource(final Jedis jedis){
        long seconds = System.currentTimeMillis();
        if(jedis!=null){
            jedis.close();
        }
    }

    public static JSONObject VerifyKey(String key){

        Jedis jedis =null;
        JSONObject jsonReturn = null;
        try {
            jedis = getJedis();
            if (jedis == null) {
                return null;
            }
            String json = jedis.get(key);
            if (json==null || json.equals("")) {
                jsonReturn = null;
            }else{
                jsonReturn = JSONObject.parseObject(json);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (null != jedis) {
                returnResource(jedis);
            }
        }
        return jsonReturn;
    }

    /**
     * 验证报警key是否存在
     * @param key
     * @return
     */
    public   static String VerifyWarnKey(String key){
        Jedis jedis = null;
        String dateStr = null;
        try {
            jedis = getJedis();
            dateStr = "";
            if (jedis != null) {
                dateStr = jedis.get(key);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            returnResource(jedis);
        }
        return dateStr;
    }

    public   static Map<String,String> VerifyMap(String key){
        Map<String,String> reMap = null;
        Jedis jedis = null;
        String jsonReturn = null;
        try {
            jedis = getJedis();
            if (jedis == null) {
                return null;
            }
            reMap = Maps.newHashMap();
            reMap = jedis.hgetAll(key);
            if (reMap==null || reMap.size() == 0) {
                reMap = null;
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            returnResource(jedis);
        }
        return reMap;
    }

    public   static void setData(String key, String jsonString) {
        Jedis jedis = null;
        String jsonReturn = null;
        try {
            jedis = getJedis();
            if (jedis != null) {
                String result = jedis.set(key, jsonString);
                System.out.println(result);
                            jedis.expireAt(key,CalendarUtil.getExpireTime());
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            returnResource(jedis);
        }

    }

    //放入string数据
    public static void setString(String key, String value) {
        Jedis jedis = null;
        String jsonReturn = null;
        try {
            jedis = getJedis();
            if (jedis != null) {
                jedis.set(key,value);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            returnResource(jedis);
        }
    }

    //根据key删除
    public static void deleteKey(String key) {
        Jedis jedis = null;
        String jsonReturn = null;
        try {
            jedis = getJedis();
            if (jedis != null) {
                jedis.del(key);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            returnResource(jedis);
        }
    }

    public   static void setMapData(String key, Map<String,String> map) {
        Jedis jedis = null;
        String jsonReturn = null;
        try {
            jedis = getJedis();
            if (jedis != null) {
                jedis.hmset(key,map);
                            jedis.expireAt(key,CalendarUtil.getExpireTime());
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            returnResource(jedis);
        }
    }
}

  

好资源希望的到支持哈~~

原文地址:https://www.cnblogs.com/fjinlong/p/8559251.html

时间: 2024-10-12 04:20:45

java项目中redis的配置好工具方法的相关文章

在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,根据hbm文件自动生成pojo和数据库脚本

     首先,我一定要吐槽下,这个Ant管理部署项目的工具,以及hibernate刚刚学习,导入我这一个简单的问题整了一天多,实在效率有点低下.在这两天中,①了解了Ant,知道了在Ant中很灵活的步骤项目的情况,知道了build.xml文件的一些基本写法.②还学习了在MyEclipse这样的集成工具中完成项目部署.③以及在这两种情况中,利用hibernateTools中的hbm2java和hbm2ddl工具,根据对象关系映射文件,自动生成POJO以及SQL文件(就是数据表). 一,在web项目

在MyEclipse的web项目/java项目中,使用Hibernate-tools中的hbm2java和hbm2ddl工具,依据hbm文件自己主动生成pojo和数据库脚本

     首先.我一定要吐槽下,这个Ant管理部署项目的工具.以及hibernate刚刚学习,导入我这一个简单的问题整了一天多.实在效率有点低下. 在这两天中,①了解了Ant.知道了在Ant中非常灵活的步骤项目的情况,知道了build.xml文件的一些基本写法.②还学习了在MyEclipse这种集成工具中完毕项目部署. ③以及在这两种情况中.利用hibernateTools中的hbm2java和hbm2ddl工具,依据对象关系映射文件,自己主动生成POJO以及SQL文件(就是数据表). 一,在w

ckeditor编辑器在java项目中配置

一.基本使用: 1.所需文件架包 A. Ckeditor基本文件包,比如:ckeditor_3.6.2.zip 下载地址:http://ckeditor.com/download 2.配置使用 A.将下载下来的CKEditor压缩解压,将解压后的文件夹("ckeditor")拷贝进项目里面,比如我是放在"WebContent"的"commons"文件夹下: B.在需要使用CKEditor的页面引入CKEditor的支持javascript <

Ant在Java项目中的使用(一眼就看会)

参考:http://www.cnblogs.com/zhengqiang/p/5557155.html Ant是跨平台的构建工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将Ant应用到Java项目中,让它简化构建和部署操作. 一.安装与部署 1.1 下载 下载地址:https://archive.apache.org/dist/ant/binaries/ 我下载的是1.7.1版本.解压到某个目录(例如D:\ant-1.7.1),即可使用. 1.1 配置环境变量 1.添加

java项目中可能会使用到的jar包解释

一.Struts2 用的版本是struts2.3.1.1 一个简单的Struts项目所需的jar包有如下8个 1. struts2-core-2.3.1.1.jar: Struts2的核心类库. 2. xwork-core-2.3.1.1.jar: XWork核心类,XWork是一个标准的command模式实现,并且完全从web层剥离出来.WebWork被构建在Xwork上,而Struts2由Struts1和WebWork两个经典的MVC框架发展而来. 3. ognl-3.0.3.jar: 支持

JAVA项目中公布WebService服务——简单实例

1.在Java项目中公布一个WebService服务: 怎样公布? --JDK1.6中JAX-WS规范定义了怎样公布一个WebService服务. (1)用jdk1.6.0_21以后的版本号公布. (2)与Web服务相关的类,都位于Javax.jws.*包中 @WebService--此注解用在类上指定将此类公布成一个WebService: EndPoint--此类为端点服务类,当中publish()方法用于将一个已经加入了@WebService注解对象绑定到一个地址的port上,用于公布. 2

JAVA项目中发布WebService服务——简单实例

1,在Java项目中发布一个WebService服务: 如何发布? --JDK1.6中JAX-WS规范定义了如何发布一个WebService服务: (1)用jdk1.6.0_21以后的版本发布: (2)与Web服务相关的类,都位于Javax.jws.*包中 @WebService--此注解用在类上指定将此类发布成一个WebService: EndPoint--此类为端点服务类,其中publish()方法用于将一个已经添加了@WebService注解对象绑定到一个地址的端口上,用于发布. 2,例子

java项目中META-INF的作用中MANIFEST.MF的作用(转载)

发布Java应用程序时你会感到困难?好在Java提供了一系列打包和发布工具,可以显著的简化发布过程 该文章提供了打包Java code的几种方法,我们将会探讨Java manifest 文件,给出用于管理JAR文件所依赖文件.估计跨平台发布所需的CLasspath的合适方法.我也会解释如何使用manifest包版本特性来确认包的兼容性... 什么是JAR文件? 在开发过程中,我们可以直接使用Java class文件来运行程序,但这并不是一个好方式,好在Java 提供了 JAR(Java Arch

log4j在java项目中使用

   Log4j.properties的路径为    src/config/log4j Log4j.properties文件的内容下面定义日志输出级别是 INFO,并且配置了2个输出目的地,一个是A3,一个是console log4j.rootLogger = INFO,A3,CONSOLE //日志最低的输出级别 log4j.appender.A3.Threshold=INFO log4j.appender.A3.encoding=UTF-8 //每天产生一个文件DailyRollingFil