缓存处理

package com.scd.core;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

/**
 * 缓存处理器
 * @author luoyi
 * */
public class RedisHandler {
    //Redis服务器IP
    private String host;
    //Redis的端口号
    private int port;
     //访问密码
    private String password;
        
    //可用连接实例的最大数目,默认值为8;
    //如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
    //private int MAX_ACTIVE = 1024;
    //控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
    private int maxIdle;
    //等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
    private int maxWait;
    private int timeOut;
    //在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
    private boolean TEST_ON_BORROW = true;
    private JedisPool jedisPool = null;
    
    public String getHost() {
        return host;
    }

    public void setHost(String host) {
        this.host = host;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public int getMaxIdle() {
        return maxIdle;
    }

    public void setMaxIdle(int maxIdle) {
        this.maxIdle = maxIdle;
    }

    public int getMaxWait() {
        return maxWait;
    }

    public void setMaxWait(int maxWait) {
        this.maxWait = maxWait;
    }

    public int getTimeOut() {
        return timeOut;
    }

    public void setTimeOut(int timeOut) {
        this.timeOut = timeOut;
    }

    public void connect()
    {        
        try {
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxIdle(maxIdle);
            config.setMaxWaitMillis(maxWait);
            config.setTestOnBorrow(TEST_ON_BORROW);
            if (!password.equals(""))
                jedisPool = new JedisPool(config, host, port, timeOut, password);
            else
                jedisPool = new JedisPool(config, host, port, timeOut);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public void close()
    {
    }
    /**
     * 缓存对象
     * @param
     *             key 键名
     *             value 缓存对象
     *             seconds (单位:秒) 过期时间
     * */
    public void set(String key,Object value,int seconds)
    {
        Jedis jedis = jedisPool.getResource();
        jedis.del(key);
        jedis.set(key.getBytes(), BaseUnit.serialize(value),"NX".getBytes(),"EX".getBytes(),seconds);
        jedisPool.returnResourceObject(jedis);
    }
    public void set(String key,String value,int seconds)
    {
        Jedis jedis = jedisPool.getResource();
        jedis.del(key);
        jedis.set(key, value,"NX","EX",seconds);
        jedisPool.returnResourceObject(jedis);
    }
    
    public Object getObject(String key)
    {
        Jedis jedis = jedisPool.getResource();
        byte[] data = jedis.get(key.getBytes());
        jedisPool.returnResourceObject(jedis);
        return BaseUnit.unserialize(data);
    }
    public String get(String key)
    {
        Jedis jedis = jedisPool.getResource();
        String val = jedis.get(key);
        jedisPool.returnResourceObject(jedis);
        return val;
    }
    
    
}

posted @ 2015-09-28 15:41  yangxu6069  阅读(155)  评论(0编辑  收藏  举报