作为一个重要的数据缓存机制,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;
}
}