JedisパッケージツールクラスJedisUtil(geoを含む)
165178 ワード
pom.xml
redis.properties
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-redisartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>redis.clientsgroupId>
<artifactId>jedisartifactId>
<version>2.9.0version>
dependency>
<dependency>
<groupId>com.dyuproject.protostuffgroupId>
<artifactId>protostuff-coreartifactId>
<version>1.1.3version>
dependency>
<dependency>
<groupId>com.dyuproject.protostuffgroupId>
<artifactId>protostuff-runtimeartifactId>
<version>1.1.3version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>fastjsonartifactId>
<version>1.2.47version>
dependency>
redis.properties
#redis
redis.host=127.0.0.1
#redis
redis.port=6379
#redis
redis.auth=test
# JedisPool , true, true
defaultSetting=false;
#jedisPool timeout , 2000
connectionTimeOut=2000
# ,false ,ture , true
redis.blockWhenExhausted=true
# , DefaultEvictionPolicy( , )
redis.evictionPolicyClassName=org.apache.commons.pool2.impl.DefaultEvictionPolicy
# pool jmx , true
redis.jmxEnabled=true
# , true
redis.lifo=true
# , 8
redis.maxIdle=8
# , 8
redis.maxTotal=8
# ( BlockWhenExhausted), , : , -1
redis.maxWaitMillis=-1
# 1800000 (30 )
redis.minEvictableIdleTimeMillis=1800000
# , 0
redis.minIdle=0
# :1/abs(n), 3
redis.numTestsPerEvictionRun=3
# , > > , MinEvictableIdleTimeMillis ( )
redis.softMinEvictableIdleTimeMillis=1800000
# , false
redis.testOnBorrow=false
# , false
redis.testWhileIdle=false
# ( ) , , -1
redus.timeBetweenEvictionRunsMillis=-1
JedisPoolUtil.java
package com.example.demo;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Properties;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisPoolUtil {
private static final String PROPERTIES_PATH = "redis.properties";
private static JedisPool jedisPool;
static {
if (jedisPool == null) {
try {
init();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
/**
* Jedis
*
* @throws IOException
*/
private static void init() throws IOException {
URL resource = JedisPoolUtil.class.getClassLoader().getResource(PROPERTIES_PATH);
if (resource == null) {
throw new FileNotFoundException(" redis :" + PROPERTIES_PATH);
}
//
InputStream input = new FileInputStream(resource.getFile());
Properties p = new Properties();
p.load(input);
// JedisPool
String host = (p.getProperty("redis.host").trim() == null || "".equals(p.getProperty("redis.host").trim())) ? "localhost" : p.getProperty("redis.host");
int port = (p.getProperty("redis.port").trim() == null || "".equals(p.getProperty("redis.port").trim())) ? 6379 : Integer.parseInt(p.getProperty("redis.port"));
String auth = p.getProperty("redis.auth").trim();
int poolTimeOut = (p.getProperty("connectionTimeOut").trim() == null || "".equals(p.getProperty("connectionTimeOut").trim())) ? 2000 : Integer.parseInt(p.getProperty("connectionTimeOut").trim());
// ,
boolean isSetDefault = (p.getProperty("defaultSetting").trim() == null || "".equals(p.getProperty("defaultSetting").trim())) ? true : Boolean.parseBoolean(p.getProperty("defaultSetting"));
if (isSetDefault) {
jedisPool = new JedisPool(new GenericObjectPoolConfig(), host, port, poolTimeOut, auth);
} else {
JedisPoolConfig config = new JedisPoolConfig();
String blockWhenExhausted = p.getProperty("redis.blockWhenExhausted").trim();
if (blockWhenExhausted != null) {
config.setBlockWhenExhausted(Boolean.parseBoolean(blockWhenExhausted));
}
String evictionPolicyClassName = p.getProperty("redis.evictionPolicyClassName").trim();
if (evictionPolicyClassName != null) {
config.setEvictionPolicyClassName(evictionPolicyClassName);
}
String jmxEnabled = p.getProperty("redis.jmxEnabled").trim();
if (jmxEnabled != null) {
config.setJmxEnabled(Boolean.parseBoolean(jmxEnabled));
}
String lifo = p.getProperty("redis.lifo").trim();
if (lifo != null) {
config.setLifo(Boolean.parseBoolean(lifo));
}
String maxIdle = p.getProperty("redis.maxIdle");
if (maxIdle != null) {
config.setMaxIdle(Integer.parseInt(maxIdle));
}
String maxTotal = p.getProperty("redis.maxTotal");
if (maxTotal != null) {
config.setMaxTotal(Integer.parseInt(maxTotal));
}
String maxWaitMillis = p.getProperty("redis.maxWaitMillis");
if (maxWaitMillis != null) {
config.setMaxWaitMillis(Long.parseLong(maxWaitMillis));
}
String minEvictableIdleTimeMillis = p.getProperty("redis.minEvictableIdleTimeMillis");
if (minEvictableIdleTimeMillis != null) {
config.setMinEvictableIdleTimeMillis(Long.parseLong(minEvictableIdleTimeMillis));
}
String minIdle = p.getProperty("redis.minIdle");
if (minIdle != null) {
config.setMinIdle(Integer.parseInt(minIdle));
}
String numTestsPerEvictionRun = p.getProperty("redis.numTestsPerEvictionRun");
if (numTestsPerEvictionRun != null) {
config.setNumTestsPerEvictionRun(Integer.parseInt(numTestsPerEvictionRun));
}
String softMinEvictableIdleTimeMillis = p.getProperty("redis.softMinEvictableIdleTimeMillis");
if (softMinEvictableIdleTimeMillis != null) {
config.setSoftMinEvictableIdleTimeMillis(Long.parseLong(softMinEvictableIdleTimeMillis));
}
String testOnBorrow = p.getProperty("redis.testOnBorrow");
if (testOnBorrow != null) {
config.setTestOnBorrow(Boolean.parseBoolean(testOnBorrow));
}
String testWhileIdle = p.getProperty("redis.testWhileIdle");
if (testWhileIdle != null) {
config.setTestWhileIdle(Boolean.parseBoolean(testWhileIdle));
}
String timeBetweenEvictionRunsMillis = p.getProperty("redus.timeBetweenEvictionRunsMillis");
if (timeBetweenEvictionRunsMillis != null) {
config.setTimeBetweenEvictionRunsMillis(Long.parseLong(timeBetweenEvictionRunsMillis));
}
jedisPool = new JedisPool(config, host, port, poolTimeOut, auth);
}
}
public static Jedis getJedis() {
return jedisPool.getResource();
}
public static void closeJedis(Jedis jedis) {
if (jedis != null) {
jedis.close();
}
}
}
JedisUtil.java
package com.example.demo;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.alibaba.fastjson.JSON;
import com.dyuproject.protostuff.LinkedBuffer;
import com.dyuproject.protostuff.ProtostuffIOUtil;
import com.dyuproject.protostuff.runtime.RuntimeSchema;
import redis.clients.jedis.GeoCoordinate;
import redis.clients.jedis.GeoRadiusResponse;
import redis.clients.jedis.GeoUnit;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.exceptions.JedisDataException;
import redis.clients.jedis.params.geo.GeoRadiusParam;
/**
* Created by Administrator on 2018/4/15.
*/
public class JedisUtil{
private static final int DEFAULT_SETEX_TIMEOUT = 60 * 60;// setex
/**
* , 1, 0
*
* @param key
* @param value
* @return
*/
public static int set(String key, String value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
if (jedis.set(key, value).equalsIgnoreCase("ok")) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* , 1, 0, 1 , DEFAULT_SETEX_TIMEOUT
*
* @param key
* @param value
* @return
*/
public static int setEx(String key, String value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
if (jedis.setex(key, DEFAULT_SETEX_TIMEOUT, value).equalsIgnoreCase("ok")) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* , 1, 0, timeout ,
*
* @param key
* @param value
* @param timeout
* @return
*/
public static int setEx(String key, String value, int timeout) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
if (jedis.setex(key, timeout, value).equalsIgnoreCase("ok")) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* , 1, 0
*
* @param key
* @param value
* @return
*/
public static <T> int set(String key, T value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
byte[] data = enSeri(value);
if (jedis.set(key.getBytes(), data).equalsIgnoreCase("ok")) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* , 1, 0, 1 , DEFAULT_SETEX_TIMEOUT
*
* @param key
* @param value
* @return
*/
public static <T> int setEx(String key, T value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
byte[] data = enSeri(value);
if (jedis.setex(key.getBytes(), DEFAULT_SETEX_TIMEOUT, data).equalsIgnoreCase("ok")) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* , 1, 0, timeout ,
*
* @param key
* @param value
* @param timeout
* @return
*/
public static <T> int setEx(String key, T value, int timeout) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
byte[] data = enSeri(value);
if (jedis.setex(key.getBytes(), timeout, data).equalsIgnoreCase("ok")) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* +1, + , null
*
* @param key
* @return
* @throws JedisDataException
*/
public static Long incr(String key) throws JedisDataException {
if (isValueNull(key)) {
return null;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.incr(key);
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* +n, + , null
*
* @param key
* @return
* @throws JedisDataException
*/
public static Long incrBy(String key, long integer) throws JedisDataException {
if (isValueNull(key)) {
return null;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.incrBy(key,integer);
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* -1, - , null
*
* @param key
* @return
* @throws JedisDataException
*/
public static Long decr(String key) throws JedisDataException {
if (isValueNull(key)) {
return null;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.decr(key);
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* -n, - , null
*
* @param key
* @return
* @throws JedisDataException
*/
public static Long decrBy(String key,long integer) throws JedisDataException {
if (isValueNull(key)) {
return null;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.decrBy(key, integer);
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* list ,, 1, 0
*
* @param key
* @param value
* @return
*/
public static int setList(String key, String... value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
Long result = jedis.rpush(key, value);
if (result != null && result != 0) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* list , list key 1 , 1, 0
*
* @param key
* @param value
* @return
*/
public static int setExList(String key, String... value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
Long result = jedis.rpush(key, value);
jedis.expire(key, DEFAULT_SETEX_TIMEOUT);
if (result != null && result != 0) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* list , list key timeOut, , 1, 0
*
* @param key
* @param value
* @return
*/
public static int setExList(String key, int timeOut, String... value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
Long result = jedis.rpush(key, value);
jedis.expire(key, timeOut);
if (result != null && result != 0) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* list , 1, 0
*
* @param key
* @param value
* @return
*/
@SafeVarargs
public static <T> int setList(String key, T... value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
int res = 0;
for (T t : value) {
byte[] data = enSeri(t);
Long result = jedis.rpush(key.getBytes(), data);
if (result != null && result != 0) {
res++;
}
}
if (res != 0) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* list , list key 1 , 1, 0
*
* @param key
* @param value
* @return
*/
@SafeVarargs
public static <T> int setExList(String key, T... value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
int res = 0;
for (T t : value) {
byte[] data = enSeri(t);
Long result = jedis.rpush(key.getBytes(), data);
if (result != null && result != 0) {
res++;
}
}
jedis.expire(key, DEFAULT_SETEX_TIMEOUT);
if (res != 0) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* list , list key timeOut, , 1, 0
*
* @param key
* @param value
* @return
*/
@SafeVarargs
public static <T> int setExList(String key, int timeOut, T... value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
int res = 0;
for (T t : value) {
byte[] data = enSeri(t);
Long result = jedis.rpush(key.getBytes(), data);
if (result != null && result != 0) {
res++;
}
}
jedis.expire(key, timeOut);
if (res != 0) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* List 1, 0
*
* @param key
* @param value
* @return
* @throws IOException
* @throws RuntimeException
*/
public static <T> int setList(String key, List<T> value) throws RuntimeException, IOException {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
byte[] data = enSeriList(value);
if (jedis.set(key.getBytes(), data).equalsIgnoreCase("ok")) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* List , 1, 0, 1 , DEFAULT_SETEX_TIMEOUT
*
* @param key
* @param value
* @return
* @throws IOException
* @throws RuntimeException
*/
public static <T> int setExList(String key, List<T> value) throws RuntimeException, IOException {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
byte[] data = enSeriList(value);
if (jedis.setex(key.getBytes(), DEFAULT_SETEX_TIMEOUT, data).equalsIgnoreCase("ok")) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* List , 1, 0, timeout ,
*
* @param key
* @param value
* @param timeout
* @return
* @throws IOException
* @throws RuntimeException
*/
public static <T> int setExList(String key, List<T> value, int timeout) throws RuntimeException, IOException {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
byte[] data = enSeriList(value);
if (jedis.setex(key.getBytes(), timeout, data).equalsIgnoreCase("ok")) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* set, key , key , 1, 0
*
* @param key
* @param value
* @return
*/
public static int setSet(String key, String... value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
Long result = jedis.sadd(key, value);
if (result != null && result != 0) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* set, key , set key , key , key , 1, 0
*
* @param key
* @param value
* @return
*/
public static int setExSet(String key, String... value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
Long result = jedis.sadd(key, value);
jedis.expire(key, DEFAULT_SETEX_TIMEOUT);
if (result != null && result != 0) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* set, key , set key timeOut , , key , key ,, 1, 0
*
* @param key
* @param value
* @return
*/
public static int setExSet(String key, int timeOut, String... value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
Long result = jedis.sadd(key, value);
jedis.expire(key, timeOut);
if (result != null && result != 0) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* set , key , 1, 0
*
* @param key
* @param value
* @return
*/
@SafeVarargs
public static <T> int setSet(String key, T... value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
int res = 0;
for (T t : value) {
byte[] data = enSeri(t);
Long result = jedis.sadd(key.getBytes(), data);
if (result != null && result != 0) {
res++;
}
}
if (res != 0) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* set , key , set key 1 , 1, 0
*
* @param key
* @param value
* @return
*/
@SafeVarargs
public static <T> int setExSet(String key, T... value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
int res = 0;
for (T t : value) {
byte[] data = enSeri(t);
Long result = jedis.sadd(key.getBytes(), data);
if (result != null && result != 0) {
res++;
}
}
jedis.expire(key, DEFAULT_SETEX_TIMEOUT);
if (res != 0) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* set , key , set key timeOut, , 1, 0
*
* @param key
* @param value
* @return
*/
@SafeVarargs
public static <T> int setExSet(String key, int timeOut, T... value) {
if (isValueNull(key, value)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
int res = 0;
for (T t : value) {
byte[] data = enSeri(t);
Long result = jedis.sadd(key.getBytes(), data);
if (result != null && result != 0) {
res++;
}
}
jedis.expire(key, timeOut);
if (res != 0) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* Map , V> , 1, 0
*
* @param key
* @param value
* @return
*/
public static <K, V> int setMap(String key, Map<K, V> value) {
if (value == null || key == null || "".equals(key)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
String data = JSON.toJSONString(value);
if (jedis.set(key, data).equalsIgnoreCase("ok")) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* Map , V> , 1, 0, 1 , DEFAULT_SETEX_TIMEOUT
*
* @param key
* @param value
* @return
*/
public static <K, V> int setExMap(String key, Map<K, V> value) {
if (value == null || key == null || "".equals(key)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
String data = JSON.toJSONString(value);
if (jedis.setex(key, DEFAULT_SETEX_TIMEOUT, data).equalsIgnoreCase("ok")) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* Map , V> , 1, 0, timeout ,
*
* @param key
* @param value
* @param timeout
* @return
*/
public static <K, V> int setExMap(String key, Map<K, V> value, int timeout) {
if (value == null || key == null || "".equals(key)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
String data = JSON.toJSONString(value);
if (jedis.setex(key, timeout, data).equalsIgnoreCase("ok")) {
return 1;
} else {
return 0;
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
*
*
* @param key
* @return
*/
public static String get(String key) {
if (isValueNull(key)) {
return null;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.get(key);
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
*
*
* @param key
* @param clazz
* @return
*/
public static <T> T get(String key, Class<T> clazz) {
if (isValueNull(key)) {
return null;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
byte[] data = jedis.get(key.getBytes());
T result = deSeri(data, clazz);
return result;
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* , START END 。 0 , 1
* , 。 , -1 , -2 , 。
*
* @param key
* @param start
* @param end
* @return
*/
public static List getList(String key, long start, long end) {
if (isValueNull(key)) {
return null;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
List result = jedis.lrange(key, start, end);
return result;
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* , START END 。 0 , 1 , 。
* , -1 , -2 , 。
*
* @param key
* @param start
* @param end
* @return
*/
public static <T> List<T> getList(String key, long start, long end, Class<T> clazz) {
if (isValueNull(key)) {
return null;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
List<byte[]> lrange = jedis.lrange(key.getBytes(), start, end);
List<T> result = null;
if (lrange != null) {
for (byte[] data : lrange) {
if (result == null) {
result = new ArrayList<>();
}
result.add(deSeri(data, clazz));
}
}
return result;
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* list
*
* @return
*/
public static long getListCount(String key) {
if (isValueNull(key)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.llen(key);
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* List ,
*
* @param key
* @param clazz
* @return
* @throws IOException
*/
public static <T> List<T> getList(String key, Class<T> clazz) throws IOException {
if (isValueNull(key)) {
return null;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
byte[] data = jedis.get(key.getBytes());
List<T> result = deSeriList(data, clazz);
return result;
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* set
*
* @param key
* @return
*/
public static Set getSet(String key) {
if (isValueNull(key)) {
return null;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
Set result = jedis.smembers(key);
return result;
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* set
*
* @param key
* @return
*/
public static <T> Set<T> getSet(String key, Class<T> clazz) {
if (isValueNull(key)) {
return null;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
Set<byte[]> smembers = jedis.smembers(key.getBytes());
Set<T> result = null;
if (smembers != null) {
for (byte[] data : smembers) {
if (result == null) {
result = new HashSet<>();
}
result.add(deSeri(data, clazz));
}
}
return result;
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
*
*
* @param key
* @return
*/
public static long getSetCount(String key) {
if (isValueNull(key)) {
return 0;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.scard(key);
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* Map ,k>
*
* @param key
* @param v
* @param k
* @return
*/
public static <K, V> Map<K, V> getMap(String key, Class<K> k, Class<V> v) {
if (key == null || "".equals(key)) {
return null;
}
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
String data = jedis.get(key);
@SuppressWarnings("unchecked")
Map<K, V> result = (Map<K, V>) JSON.parseObject(data);
return result;
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* key
* @param key
* @return
*/
public static boolean exists(String key){
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.exists(key);
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* key
* @param keys
* @return
*/
public static Long exists(String... keys){
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.exists(keys);
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
*
*
* @param key
*/
public static void del(String... key) {
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
for (int i = 0; i < key.length; i++) {
jedis.del(key);
}
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
// -------------------------- ------------------------------------
/**
* null, null true, null false
*
* @param obj
* @return
*/
private static boolean isValueNull(Object... obj) {
for (int i = 0; i < obj.length; i++) {
if (obj[i] == null || "".equals(obj[i])) {
return true;
}
}
return false;
}
/**
*
*
* @param value
* @return
*/
private static <T> byte[] enSeri(T value) {
@SuppressWarnings("unchecked")
RuntimeSchema<T> schema = (RuntimeSchema<T>) RuntimeSchema.createFrom(value.getClass());
byte[] data = ProtostuffIOUtil.toByteArray(value, schema,
LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE));
return data;
}
/**
*
*
* @param data
* @param clazz
* @return
*/
private static <T> T deSeri(byte[] data, Class<T> clazz) {
if (data == null || data.length == 0) {
return null;
}
RuntimeSchema<T> schema = RuntimeSchema.createFrom(clazz);
T result = schema.newMessage();
ProtostuffIOUtil.mergeFrom(data, result, schema);
return result;
}
/**
* List
*
* @param list
* @return
* @throws IOException
*/
private static <T> byte[] enSeriList(List<T> list) throws RuntimeException, IOException {
if (list == null || list.size() == 0) {
throw new RuntimeException(" !");
}
@SuppressWarnings("unchecked")
RuntimeSchema<T> schema = (RuntimeSchema<T>) RuntimeSchema.getSchema(list.get(0).getClass());
ByteArrayOutputStream out = new ByteArrayOutputStream();
ProtostuffIOUtil.writeListTo(out, list, schema, LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE));
byte[] byteArray = out.toByteArray();
return byteArray;
}
/**
* List
*
* @param data
* @param clazz
* @return
* @throws IOException
*/
private static <T> List<T> deSeriList(byte[] data, Class<T> clazz) throws IOException {
if (data == null || data.length == 0) {
return null;
}
RuntimeSchema<T> schema = RuntimeSchema.createFrom(clazz);
List<T> result = ProtostuffIOUtil.parseListFrom(new ByteArrayInputStream(data), schema);
return result;
}
//----------------------geo start------------------------------------------
/**
*
*
* @param key
* @param coordinate
* @param member
* @return Long
*/
public static Long geoadd(String key, GeoCoordinate coordinate, String member) {
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.geoadd(key, coordinate.getLongitude(), coordinate.getLatitude(), member);
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
*
*
* @param key
* @param memberCoordinateMap
* @return Long
*/
public static Long geoadd(String key, Map memberCoordinateMap) {
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.geoadd(key, memberCoordinateMap);
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* ( + + ,)
*
* @param key
* @param coordinate
* @param radius
* @return List<GeoRadiusResponse>
*/
public static List geoRadius(String key, GeoCoordinate coordinate, double radius) {
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.georadius(key, coordinate.getLongitude(), coordinate.getLatitude(), radius, GeoUnit.KM, GeoRadiusParam.geoRadiusParam().withDist().withCoord().sortAscending());
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* ( + + ,)
*
* @param key
* @param member
* @param radius
* @return List<GeoRadiusResponse>
*/
public List georadiusByMember(String key, String member, double radius) {
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
return jedis.georadiusByMember(key, member, radius, GeoUnit.KM, GeoRadiusParam.geoRadiusParam().withDist().withCoord().sortAscending());
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* 2
*
* @param key
* @param member1
* @param member2
* @param unit
* @return Double
*/
public static Double geoDist(String key, String member1, String member2, GeoUnit unit) {
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
Double dist = jedis.geodist(key, member1, member2, unit);
return dist;
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
* geohash
*
* @param key
* @param members
* @return List<String>
*/
public static List geoHash(String key, String... members) {
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
List resultList = jedis.geohash(key, members);
return resultList;
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/**
*
*
* @param key
* @param member
* @return List<GeoCoordinate>
*/
public static List geopos(String key, String... member) {
Jedis jedis = null;
try {
jedis = JedisPoolUtil.getJedis();
List result = jedis.geopos(key, member);
return result;
} finally {
JedisPoolUtil.closeJedis(jedis);
}
}
/*
* geo
* @param key
* @param longitude
* @param latitude
* @param name
* @return
*/
/*public Long geoADD(String key,double longitude,double latitude,String eleName){
String[] params = new String[]{key,String.valueOf(longitude),String.valueOf(latitude),eleName};
int keyCount = 4;
return (Long)jedis.eval("return redis.call('GEOADD',KEYS[1],KEYS[2],KEYS[3],KEYS[4])", keyCount,params);
}*/
/**
* 2
* @param key
* @param d1
* @param d2
* @param unit
* @return
*/
/*public Double geoDist(String key,String d1,String d2,String unit){
return Double.valueOf((String)jedis.eval("return redis.call('GEODIST',KEYS[1],KEYS[2],KEYS[3],KEYS[4])",4, key,d1,d2,unit));
}*/
/**
* geohash
* @param key
* @param dName
* @return
*/
/*public String geoHash(String key,String dName){
Object data = jedis.eval("return redis.call('GEOHASH',KEYS[1],KEYS[2])", 2, new String[]{key,dName});//GEOPOS ?
List resultList = (List)data;
if(resultList!=null&&resultList.size() > 0){
return (String)resultList.get(0);
}
return null;
}*/
/**
*
* @param key
* @param dName
* @return
*/
/* public List geoPos(String key,String dName){
Object data = jedis.eval("return redis.call('GEOPOS',KEYS[1],KEYS[2])", 2, key,dName);
List resultList = (List)data;
if(resultList!=null&&resultList.size() > 0){
return resultList.get(0);
}
return null;
}*/
/**
*
* @param key
* @param longitude
* @param latitude
* @param unit
* @param asc
* @return
*/
/*public List geoRadius(String key,double longitude,double latitude,int radius,String unit,boolean asc){
Object data = jedis.eval("return redis.call('GEORADIUS',KEYS[1],KEYS[2],KEYS[3],KEYS[4],KEYS[5],KEYS[6])", 6, key,String.valueOf(longitude),
String.valueOf(latitude),String.valueOf(radius),unit,asc?"ASC":"DESC");
return (List)data;
}*/
/**
* ,
*
*
* @param key
* @param dName
* @param unit
* @param asc
* @return
*/
/* public List geoNearByMembersByDistance(String key,String dName,int radius,String unit,boolean asc){
Object data = jedis.eval("return redis.call('GEORADIUSBYMEMBER',KEYS[1],KEYS[2],KEYS[3],KEYS[4],KEYS[5])", 5, key,dName,String.valueOf(radius),unit,asc?"ASC":"DESC");
return (List)data;
}*/
//------------------------------geo end---------------------------------------
}