import redis.clients.jedis.BinaryClient;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
*
* @ClassName: RedisUtils
* @Description: redis工具类 jedis实现
*
*/
public class RedisUtils {
private JedisPool pool = null;
private RedisUtils() {
if (pool == null) {
//FIXME 改成从配置里面获取 --start
String ip = "192.168.1.1";
int port = 6379;
String password = "pwd";
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(25);//设置最大连接数
jedisPoolConfig.setMaxIdle(20);
jedisPoolConfig.setMinIdle(5);
jedisPoolConfig.setMaxWaitMillis(5000);
//-----end
// jedisPoolConfig.setTestOnBorrow(SysConfigUtil.getSysConfigUtil("redis.properties").getBoolean("redis.testOnBorrow"));
if (password != null && !"".equals(password)) {
// redis 设置了密码
pool = new JedisPool(jedisPoolConfig, ip, port, 10000, password);
} else {
// redis 未设置密码
pool = new JedisPool(jedisPoolConfig, ip, port, 10000);
}
}
}
/**
* 获取指定key的值,如果key不存在返回null,如果该Key存储的不是字符串,会抛出一个错误
*
* @param key
* @param index db几(哪个指定库)
* @return
*/
public String get(String key,int index) {
Jedis jedis = getJedis();
jedis.select(index);
String value = null;
value = jedis.get(key);
return value;
}
/**
* 设置key的值为value
*
* @param key
* @param value
* @return
*/
public String set(String key, String value,int index) {
Jedis jedis = getJedis();
jedis.select(index);
return jedis.set(key, value);
}
/**
* 删除指定的key
*
* @param keys
* @return
*/
public Long del(int index,String... keys) {
Jedis jedis = getJedis();
jedis.select(index);
return jedis.del(keys);
}
/**
* 通过key向指定的value值追加值
*
* @param key
* @param str
* @return
*/
public Long append(String key, String str,int index) {
Jedis jedis = getJedis();
jedis.select(index);
return jedis.append(key, str);
}
/**
* 判断key是否存在
*
* @param key
* @return
*/
public Boolean exists(String key,int index) {
Jedis jedis = getJedis();
jedis.select(index);
return jedis.exists(key);
}
/**
* 设置key value,如果key已经存在则返回0
*
* @param key
* @param value
* @return
*/
public Long setnx(String key, String value ,int index) {
Jedis jedis = getJedis();
jedis.select(index);
return jedis.setnx(key, value);
}
/**
* 设置key value并指定这个键值的有效期
*
* @param key
* @param seconds
* @param value
* @return
*/
public String setex(String key, int seconds, String value,int index) {
Jedis jedis = getJedis();
jedis.select(index);
return jedis.setex(key, seconds, value);
}
/**
* 通过key 和offset 从指定的位置开始将原先value替换
*
* @param key
* @param offset
* @param str
* @return
*/
public Long setrange(String key, int offset, String str,int index) {
Jedis jedis = getJedis();
jedis.select(index);
return jedis.setrange(key, offset, str);
}
/**
* 通过批量的key获取批量的value
*
* @param keys
* @return
*/
public List<String> mget(int index,String... keys) {
Jedis jedis = getJedis();
jedis.select(index);
return jedis.mget(keys);
}
/**
* 批量的设置key:value,也可以一个
*
* @param keysValues
* @return
*/
public String mset(int index,String... keysValues) {
Jedis jedis = getJedis();
jedis.select(index);
return jedis.mset(keysValues);
}
/**
* 批量的设置key:value,可以一个,如果key已经存在则会失败,操作会回滚
*
* @param keysValues
* @return
*/
public Long msetnx(int index,String... keysValues) {
Jedis jedis = getJedis();
jedis.select(index);
return jedis.msetnx(keysValues);
}
/**
* 设置key的值,并返回一个旧值
*
* @param key
* @param value
* @return
*/
public String getSet(String key, String value,int index) {
Jedis jedis = getJedis();
jedis.select(index);
return jedis.getSet(key, value);
}
/**
* 通过下标 和key 获取指定下标位置的 value
*
* @param key
* @param startOffset
* @param endOffset
* @return
*/
public String getrange(String key, int startOffset, int endOffset) {
Jedis jedis = get