Redis工具类

  作为一个重要的数据缓存机制,redis有着广泛的运用。下面是一个redis工具类。  

import com.google.gson.Gson;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisSentinelPool;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
 * redis工具类
 */
public class UtilRedis {
    private static JedisSentinelPool jedisSentinelPool;
    static {
        // redis 属性配置 start
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(5000);
        config.setMaxIdle(256);
        config.setMaxWaitMillis(5000L);
        config.setTestOnBorrow(true);
        config.setTestOnReturn(true);
        config.setTestWhileIdle(true);
        config.setMinEvictableIdleTimeMillis(60000L);
        config.setTimeBetweenEvictionRunsMillis(3000L);
        config.setNumTestsPerEvictionRun(-1);
        // redis 属性配置 end

        Set<String> sentinels = new HashSet<String>();
        sentinels.add("127.0.0.1:26379"); // 此处放置ip及端口为 sentinel
        sentinels.add("127.0.0.1:27379"); // 此处放置ip及端口为 sentinel
        // 服务地址,如果有多个sentinel 则逐一add即可
        jedisSentinelPool = new JedisSentinelPool("mymaster", sentinels, config);
    }

    public static Jedis getJedis() {
        try {
            return jedisSentinelPool.getResource();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void release(Jedis jedis) {
//        jedis.close();

        try {
            jedisSentinelPool.returnResourceObject(jedis);
        } catch (Exception e) {
            e.printStackTrace();

            if (jedis.isConnected()) {
                jedis.disconnect();
                jedis.close();
                jedis = null;
                System.gc();
            }
        }
    }

//    public static void main(String[] args) {
//        Jedis jedis = UtilRedis.getJedis();
//        jedis.set("datajava1","xxxx1");
//        jedis.lpush("datalist1","a","b","c","d");
//
//        System.out.println(jedis.get("datajava1"));
//        System.out.println(jedis.lrange("datalist1",0,-1));
//
//        UtilRedis.release(jedis);
//
//        System.out.println("-----------------------------------------");
//
//        Jedis jedis2 = UtilRedis.getJedis();
//        jedis2.set("datajava2","xxxx2");
//        jedis2.lpush("datalist2","a2","b2","c2","d2");
//
//        System.out.println(jedis2.get("datajava2"));
//        System.out.println(jedis2.lrange("datalist2",0,-1));
//
//        UtilRedis.release(jedis2);
//    }
    //将json字符串解析为相应类型的对象
    public static <T> List<T> convertObjs(List<String> jsons, Class<T> clazz) {
        Gson gson = new Gson();
        List<T> objs = new ArrayList<>();
        for (String json : jsons) {
            objs.add(gson.fromJson(json, clazz));
        }
        return objs;
    }
}  
posted @ 2018-03-22 18:46  奔跑在梦想的道路上  阅读(303)  评论(0编辑  收藏  举报