RedisTemplate.java

来源:互联网 发布:怎样加速手机网络 编辑:程序博客网 时间:2024/06/05 02:39

RedisTemplate.java
Redis客户端Java类

import java.io.Serializable;import java.util.ArrayList;import java.util.Collection;import java.util.List;import java.util.Map;import java.util.Set;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.util.SerializationUtils;import redis.clients.jedis.BinaryClient.LIST_POSITION;import redis.clients.jedis.ShardedJedis;import redis.clients.jedis.ShardedJedisPipeline;import redis.clients.jedis.SortingParams;import redis.clients.jedis.Tuple;/** * Redis 操作类(基于ShardedJedis Client) *  * */public class RedisTemplate {    private static final Logger logger = LoggerFactory.getLogger(RedisTemplate.class);    @Autowired    private RedisDataSource redisDataSource;    /**     * 断开连接     */    public void disconnect() {        try {            ShardedJedis jedis = redisDataSource.getRedisClient();            jedis.disconnect();        } catch (Exception t) {            logger.error(t.getMessage(), t);        }    }    private ShardedJedis getRedisClient() {        return redisDataSource.getRedisClient();    }    /**     * 设置单个值     *      * @param key     * @param value     * @return     */    public String set(String key, String value) {        String result = null;        ShardedJedis jedis = getRedisClient();        if (jedis == null) {            return result;        }        try {            result = jedis.set(key, value);        } catch (Exception e) {            logger.error(e.getMessage(), e);        } finally {            redisDataSource.returnResource(jedis);        }        return result;    }    /**     * 设置单个值     *      * @param key     * @param value     * @return     */    public String set(String key, String value, int seconds) {        String result = null;        ShardedJedis jedis = getRedisClient();        if (jedis == null) {            return result;        }        try {            result = jedis.set(key, value);            jedis.expire(key, seconds);        } catch (Exception e) {            logger.error(e.getMessage(), e);        } finally {            redisDataSource.returnResource(jedis);        }        return result;    }    /**     * 获取单个值     *      * @param key     * @return     */    public String get(String key) {        String result = null;        ShardedJedis jedis = getRedisClient();        if (jedis == null) {            return result;        }        try {            result = jedis.get(key);        } catch (Exception e) {            logger.error(e.getMessage(), e);        } finally {            redisDataSource.returnResource(jedis);        }        return result;    }    /**     * 判断是否存在某个值     *      * @param key     * @return     */    public Boolean exists(String key) {        Boolean result = false;        ShardedJedis jedis = getRedisClient();        if (jedis == null) {            return result;        }        try {            result = jedis.exists(key);        } catch (Exception e) {            logger.error(e.getMessage(), e);        } finally {            redisDataSource.returnResource(jedis);        }        return result;    }    public String type(String key) {        String result = null;        ShardedJedis jedis = getRedisClient();        if (jedis == null) {            return result;        }        try {            result = jedis.type(key);        } catch (Exception e) {            logger.error(e.getMessage(), e);        } finally {            redisDataSource.returnResource(jedis);        }        return result;    }    /**     * 在某段时间后失效     *      * @param key     * @param seconds     * @return     */    public Long expire(String key, int seconds) {        Long result = null;        ShardedJedis jedis = getRedisClient();        if (jedis == null) {            return result;        }        try {            result = jedis.expire(key, seconds);        } catch (Exception e) {            logger.error(e.getMessage(), e);        } finally {            redisDataSource.returnResource(jedis);        }        return result;    }    /**     * 在某个时间点失效     *      * @param key     * @param unixTime     * @return     */    public Long expireAt(String key, long unixTime) {        Long result = null;        ShardedJedis jedis = getRedisClient();        if (jedis == null) {            return result;        }        try {            result = jedis.expireAt(key, unixTime);        } catch (Exception e) {            logger.error(e.getMessage(), e);        } finally {            redisDataSource.returnResource(jedis);        }        return result;    }    /**     * 以秒为单位返回 key 的剩余过期时间     *      * @param key     * @return     */    public Long ttl(String key) {        Long result = null;        ShardedJedis jedis = getRedisClient();        if (jedis == null) {            return result;        }        try {            result = jedis.ttl(key);        } catch (Exception e) {            logger.error(e.getMessage(), e);        } finally {            redisDataSource.returnResource(jedis);        }        return result;    }    /**     * 设置或者清空key的value在offset处的bit值     *      * @param key     *            key     * @param offset     *            位置     * @param value     *            获取的值     * @return 是否已经设置     */    public boolean setbit(String key, long offset, boolean value) {        ShardedJedis jedis = getRedisClient();        boolean result = false;        if (jedis == null) {            return result;        }        try {            result = jedis.setbit(key, offset, value);        } catch (Exception e) {            logger.error(e.getMessage(), e);        } finally {            redisDataSource.returnResource(jedis);        }        return result;    }    /**     * 获取到key的value在offset的bit值。     *      * @param key     * @param offset     * @return     */    public boolean getbit(String key, long offset) {        ShardedJedis jedis = getRedisClient();        boolean result = false;        if (jedis == null) {            return result;        }        try {            result = jedis.getbit(key, offset);        } catch (Exception e) {            logger.error(e.getMessage(), e);        } finally {            redisDataSource.returnResource(jedis);        }        return result;    }    /**     * 设置和覆盖key的value,然后从offset开始,设置新的value。     *      * @param key     *            key     * @param offset     *            位置     * @param value     *            新的value     * @return 修改后的字符串长度     */    public long setrange(String key, long offset, String value) {        ShardedJedis jedis = getRedisClient();        long result = 0;        if (jedis == null) {            return result;        }        try {            result = jedis.setrange(key, offset, value);        } catch (Exception e) {            logger.error(e.getMessage(), e);        } finally {            redisDataSource.returnResource(jedis);        }        return result;    }    public void setRedisDataSource(RedisDataSource redisDataSource) {        this.redisDataSource = redisDataSource;    }    public RedisDataSource getRedisDataSource() {        return redisDataSource;    }}
原创粉丝点击