spring整合redis

1,在pom中加入依赖

<dependency>
   <groupId>redis.clients</groupId>
   <artifactId>jedis</artifactId>
   <version>2.4.2</version>
</dependency>
2,在spring配置文件中配置pool

<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
    <property name="maxTotal" value="${redis.pool.maxTotal}"/>
    <property name="maxIdle" value="${redis.pool.maxIdle}"/>
    <property name="minIdle" value="${redis.pool.minIdle}"/>
    <property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}"/>
    <property name="testOnBorrow" value="true"/>
    <property name="testOnReturn" value="true"/>
</bean>

<bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool"  scope="singleton">
    <constructor-arg index="0" ref="jedisPoolConfig" />
    <constructor-arg index="1">
        <list>
            <bean name="slaver" class="redis.clients.jedis.JedisShardInfo">
                <constructor-arg index="0" value="${redis.slaver.host}"/>
                <constructor-arg index="1" value="${redis.slaver.port}" type="int"/>
            </bean>
            <bean name="master" class="redis.clients.jedis.JedisShardInfo">
                <constructor-arg index="0" value="${redis.master.host}"/>
                <constructor-arg index="1" value="${redis.master.port}" type="int"/>
            </bean>
        </list>
    </constructor-arg>
</bean>

<!-- redis的连接池pool,不是必选项:timeout/password  -->
<bean id = "jedisPool" class="redis.clients.jedis.JedisPool">
    <constructor-arg index="0" ref="jedisPoolConfig"/>
    <constructor-arg index="1" value="${redis.host}"/>
</bean>
3,编写redis工具类

public class ShardedJedisUtil {

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

    @Autowired
    private ShardedJedisPool shardedJedisPool;

    /**
     * 设置一个key的过期时间(单位:秒)
     * @param key key     * @param seconds 多少秒后过期
     * @return 1:设置了过期时间  0:没有设置过期时间/不能设置过期时间
     */
    public long expire(String key, int seconds) {
        if (key==null || key.equals("")) {
            return 0;
        }

        ShardedJedis shardedJedis = null;
        try {
            shardedJedis = shardedJedisPool.getResource();
            return shardedJedis.expire(key, seconds);
        } catch (Exception ex) {
            logger.error("EXPIRE error[key=" + key + " seconds=" + seconds + "]" + ex.getMessage(), ex);
            returnBrokenResource(shardedJedis);
        } finally {
            returnResource(shardedJedis);
        }
        return 0;
    }

    /**
     * 设置一个key在某个时间点过期
     * @param key key     * @param unixTimestamp unix时间戳,从1970-01-01 00:00:00开始到现在的秒数
     * @return 1:设置了过期时间  0:没有设置过期时间/不能设置过期时间
     */
    public long expireAt(String key, int unixTimestamp) {
        if (key==null || key.equals("")) {
            return 0;
        }

        ShardedJedis shardedJedis = null;
        try {
            shardedJedis = shardedJedisPool.getResource();
            return shardedJedis.expireAt(key, unixTimestamp);
        } catch (Exception ex) {
            logger.error("EXPIRE error[key=" + key + " unixTimestamp=" + unixTimestamp + "]" + ex.getMessage(), ex);
            returnBrokenResource(shardedJedis);
        } finally {
            returnResource(shardedJedis);
        }
        return 0;
    }

    /**
     * 截断一个List
     * @param key 列表key
     * @param start 开始位置 从0开始
     * @param end 结束位置
     * @return 状态码
     */
    public String trimList(String key, long start, long end) {
        if (key == null || key.equals("")) {
            return "-";
        }
        ShardedJedis shardedJedis = null;
        try {
            shardedJedis = shardedJedisPool.getResource();
            return shardedJedis.ltrim(key, start, end);
        } catch (Exception ex) {
            logger.error("LTRIM 出错[key=" + key + " start=" + start + " end=" + end + "]" + ex.getMessage() , ex);
            returnBrokenResource(shardedJedis);
        } finally {
            returnResource(shardedJedis);
        }
        return "-";
    }
    /**
     * 检查Set长度
     * @param key
     * @return
     */
    public long countSet(String key){
        if(key == null ){
            return 0;
        }
        ShardedJedis shardedJedis = null;
        try {
            shardedJedis = shardedJedisPool.getResource();
            return shardedJedis.scard(key);
        } catch (Exception ex) {
            logger.error("countSet error.", ex);
            returnBrokenResource(shardedJedis);
        } finally {
            returnResource(shardedJedis);
        }
        return 0;
    }
    /**
     * 添加到Set中(同时设置过期时间)
     * @param key key     * @param seconds 过期时间 单位s
     * @param value
     * @return
     */
    public boolean addSet(String key,int seconds, String... value) {
        boolean result = addSet(key, value);
        if(result){
            long i = expire(key, seconds);
            return i==1;
        }
        return false;
    }
    /**
     * 添加到Set     * @param key
     * @param value
     * @return
     */
    public boolean addSet(String key, String... value) {
        if(key == null || value == null){
            return false;
        }
        ShardedJedis shardedJedis = null;
        try {
            shardedJedis = shardedJedisPool.getResource();
            shardedJedis.sadd(key, value);
            return true;
        } catch (Exception ex) {
            logger.error("setList error.", ex);
            returnBrokenResource(shardedJedis);
        } finally {
            returnResource(shardedJedis);
        }
        return false;
    }

    /**
     * @param key
     * @param value
     * @return 判断值是否包含在set     */
    public boolean containsInSet(String key, String value) {
        if(key == null || value == null){
            return false;
        }
        ShardedJedis shardedJedis = null;
        try {
            shardedJedis = shardedJedisPool.getResource();
            return shardedJedis.sismember(key, value);
        } catch (Exception ex) {
            logger.error("setList error.", ex);
            returnBrokenResource(shardedJedis);
        } finally {
            returnResource(shardedJedis);
        }
        return false;
    }
    /**
     * 获取Set
     * @param key
     * @return
     */
    public  Set<String> getSet(String key){
        ShardedJedis shardedJedis = null;
        try {
            shardedJedis = shardedJedisPool.getResource();
            return shardedJedis.smembers(key);
        } catch (Exception ex) {
            logger.error("getList error.", ex);
            returnBrokenResource(shardedJedis);
        } finally {
            returnResource(shardedJedis);
        }
        return null;
    }

    /**
     * set中删除value
     * @param key
     * @return
     */
    public  boolean removeSetValue(String key,String... value){
        ShardedJedis shardedJedis = null;
        try {
            shardedJedis = shardedJedisPool.getResource();
            shardedJedis.srem(key, value);
            return true;
        } catch (Exception ex) {
            logger.error("getList error.", ex);
            returnBrokenResource(shardedJedis);
        } finally {
            returnResource(shardedJedis);
        }
        return false;
    }

posted @ 2017-04-26 16:03  海尚书  阅读(103)  评论(0编辑  收藏  举报