redis的安装配置与工具类开发

来源:互联网 发布:excel可以当数据库吗 编辑:程序博客网 时间:2024/06/10 18:29

本文的内容都是围绕redis进行的,主要目的是为zookeeper+dubbo的分布式项目铺路,计划在该项目中引用redis作为缓存机制,算是解决session共享问题的一个方案。但是本文并不介绍redis集群的相关内容,只是redis的简单应用。

一.redis的安装(windows环境)

1.下载redis,官网上目前已经无法下载windows版本的redis了,官网只提供Linux版本的下载,所以我们需要到GitHub上进行下载。

     http://blog.csdn.net/u010820422/article/details/72236092

2.我下载的是redis-2.4.2-win32-win64-fix.zip 这个版本,解压该文件夹,下面有64bit文件夹,将该文件夹拷贝到目标目录(就是redis想存放的路径)

  接下来我们可以修改redis.conf这个文件(不修改也行),我们可以设置redis的访问密码,以及redis持久化方案。

如图,我设置的redis的访问密码为redis:


接下来我们还可以设置redis的持久化方案,redis的持久化方案有两种,第一种为rdb,一种为aof。

rdb:在指定的时间间隔内将数据存入写入磁盘,个人的理解就是每隔指定时间就会更新一个rdb文件,进行数据的备份。

aof:aof机制会在每次发生写与删操作时都进行操作的记录。aof相比于rdb更能保证数据的安全性。

关于这两种机制的介绍,大家可以上网搜一下,有很多。

这里我们设置的为rdb,如图:



图中,1表示开启rdb,2为rdb文件的存储路径。

3.启动redis,启动时我们需要使用cmd进入redis所在目录,然后执行

redis-server.exe redis.conf
该命令指定了redis启动时的配置,如果只是执行redis-server的话,会造成我们上面进行的配置无法生效,因为没有读取配置。

二.redis工具类的开发

本人想开发一个工具类,哪个项目想用哪个项目就拿走就ok的那种,上网搜了一下发现晚上没有,所以自己搞了一个,只是一个初步的工具类,大家可以完善丰富或者改改bug。。。。。。

package cn.com.demo.test;import com.alibaba.fastjson.JSONObject;import org.apache.commons.lang.StringUtils;import org.apache.log4j.Logger;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clients.jedis.JedisPoolConfig;import java.io.IOException;import java.util.Properties;/** * @Author : zw * @Date : 16:38 2017/5/17 * @Remark : **/public class RedisUtil {    private static String HOST = "127.0.0.1"; // ip    private static int PORT = 6379;         // 端口    private static String AUTH="";          // 密码(原始默认是没有密码)    private static int   MAX_ACTIVE = 1024;       // 最大连接数    private static int   MAX_IDLE = 200;          // 设置最大空闲数    private static int   MAX_WAIT = 10000;        // 最大连接时间    private static int   TIMEOUT = 10000;         // 超时时间    private static boolean BORROW = true;         // 在borrow一个事例时是否提前进行validate操作    private static JedisPool pool = null;    private static Logger logger = Logger.getLogger(RedisUtil.class);    static    {        Properties po = new Properties();        try {            po.load(RedisUtil.class                    .getResourceAsStream("/redis.properties"));            if (StringUtils.isNotBlank(po.getProperty("redis.host"))){                HOST=po.getProperty("redis.host");            }            if (StringUtils.isNotBlank(po.getProperty("redis.port"))){                PORT=Integer.parseInt(po.getProperty("redis.port"));            }            if (StringUtils.isNotBlank(po.getProperty("redis.password"))){                AUTH=po.getProperty("redis.password");            }            if (StringUtils.isNotBlank(po.getProperty("redis.timeout"))){                TIMEOUT=Integer.parseInt(po.getProperty("redis.timeout"));            }            if (StringUtils.isNotBlank(po.getProperty("redis.maxactive"))){                MAX_ACTIVE=Integer.parseInt(po.getProperty("redis.maxactive"));            }            if (StringUtils.isNotBlank(po.getProperty("redis.maxidle"))){                MAX_IDLE=Integer.parseInt(po.getProperty("redis.maxidle"));            }            if (StringUtils.isNotBlank(po.getProperty("redis.maxwait"))){                MAX_WAIT=Integer.parseInt(po.getProperty("redis.maxwait"));            }            JedisPoolConfig config = new JedisPoolConfig();            config.setMaxTotal(MAX_ACTIVE);            config.setMaxIdle(MAX_IDLE);            config.setMaxWaitMillis(MAX_WAIT);            config.setTestOnBorrow(BORROW);            if(StringUtils.isNotBlank(AUTH)){                pool = new JedisPool(config, HOST, PORT, TIMEOUT,AUTH);            }else{                pool = new JedisPool(config, HOST, PORT, TIMEOUT);            }        } catch (IOException e) {            logger.error("rediUtil init error:",e);            e.printStackTrace();        }    }    /**     * 获取连接     */    public   Jedis getJedis()    {        try        {            if(pool != null)            {                return pool.getResource();            }            else            {                return null;            }        }        catch (Exception e) {            logger.error("连接池连接异常:",e);            e.printStackTrace();            return null;        }    }    /**     * @Description:设置失效时间     * @param @param key     * @param @param seconds     * @param @return     * @return boolean 返回类型     */    public  void disableTime(String key,int seconds)    {        Jedis jedis = null;        try        {            jedis = getJedis();            jedis.expire(key, seconds);        }        catch (Exception e) {            logger.error("设置失效失败.",e);        }finally {            getColse(jedis);        }    }    /**     * @param  : [key]     * @return : boolean     * @author : zw     * @Date   : 2017/5/18     * 检测key是否存在     **/    public boolean existKey(String key){        Jedis jedis = null;        try {            jedis = getJedis();            return  jedis.exists(key);        } catch (Exception e) {            e.printStackTrace();            logger.error(key+" existKey error:",e);            return false;        } finally {            getColse(jedis);        }    }    /**     * @param  : [key]     * @return : java.lang.String     * @author : zw     * @Date   : 2017/5/18     * 获取key对应的值 以String类型返回     **/public String getValue(String key){    Jedis jedis = null;    try {        jedis = getJedis();       return jedis.get(key);    } catch (Exception e) {        e.printStackTrace();        logger.error(key+" getValue error:",e);        return null;    } finally {        getColse(jedis);    }}    /**     * @param  : [key, obj]     * @return : boolean     * @author : zw     * @Date   : 2017/5/18     * 以json形式存储object     **/    public  boolean addObject(String key,Object obj)    {        Jedis jedis = null;        String value = JSONObject.toJSONString(obj);        try        {            jedis = getJedis();            String code = jedis.set(key, value);            if(code.equals("ok"))            {                return true;            }        }        catch (Exception e) {            logger.error(key+"  addObject error:",e);            return false;        }finally {            getColse(jedis);        }        return false;    }    /**     * @param  : [key, value]     * @return : boolean     * @author : zw     * @Date   : 2017/5/18     * 存储String     **/    public  boolean addString(String key,String value)    {        Jedis jedis = null;        try        {            jedis = getJedis();            String code = jedis.set(key, value);            if(code.equals("ok"))            {                return true;            }        }        catch (Exception e) {            logger.error(key+"-"+value+"  addString error:",e);            return false;        }finally {            getColse(jedis);        }        return false;    }    /**     * @param  : [key]     * @return : boolean     * @author : zw     * @Date   : 2017/5/18     * 删除key     **/    public  boolean delKey(String key)    {        Jedis jedis = null;        try        {            jedis = getJedis();            Long code = jedis.del(key);            if(code > 1)            {                return true;            }        }        catch (Exception e) {            logger.error(key+"  delKey error:",e);            return false;        }finally {            getColse(jedis);        }        return false;    }    /**     * @Description: 关闭连接     * @param @param jedis     * @return void 返回类型     */    public  void getColse(Jedis jedis)    {        if(jedis != null)        {            jedis.close();        }    }}

还需要一个配置文件,文件路径放到resources目录下即可。

redis.host=127.0.0.1redis.port=6379redis.password=redisredis.timeout=10000redis.maxactive=1024redis.maxidle=200redis.maxwait=10000