Redis助手工具类,如何高效应对长尾词查询挑战?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1807个文字,预计阅读时间需要8分钟。
javapackage com.isoftstone.pcis.util;
import java.io.IOException;import java.io.InputStream;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Properties;import org.apache.log4j.Logger;
public class RedisHelper { private static final Logger LOGGER=Logger.getLogger(RedisHelper.class); private Properties properties;
public RedisHelper() { loadProperties(); }
private void loadProperties() { InputStream inputStream=this.getClass().getClassLoader().getResourceAsStream(redis.properties); properties=new Properties(); try { properties.load(inputStream); } catch (IOException e) { LOGGER.error(Failed to load properties, e); } }
public String getProperty(String key) { return properties.getProperty(key); }
public List getPropertyList(String key) { return properties.getProperty(key).split(,); }
public Map getPropertyMap(String key) { String[] keyValue=properties.getProperty(key).split(,); Map map=new HashMap(); for (String entry : keyValue) { String[] pair=entry.split(:); map.put(pair[0].trim(), pair[1].trim()); } return map; }}
RedisHelper.javapackage com.isoftstone.pcis.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;
/**
*
* @author qingzhu@isoftstone.com Redis Helper 类处理Redis基本操作
*
*/
public class RedisHelper {
static Logger logger = Logger.getLogger(RedisHelper.class);
public static String getStringByKey(final String key) {
return (String) getObjectByKey(key);
}
public static Object getObjectByKey(final String key) {
Jedis jedis = null;
try {
jedis = RedisPool.getJedis();
final String s = DBPREFIX + key;
byte[] ret = jedis.get(s.getBytes());
if (ret != null) {
return SerializeUtils.deserialize(ret);
} else {
return null;
}
} catch (Exception e) {
RedisPool.brokenResource(jedis);
logger.error(e.getMessage());
} finally {
RedisPool.retResource(jedis);
}
return null;
}
public static boolean setObject2Redis(final String key, final String value) {
return setObject2Redis(key, (Object) value);
}
public static boolean setObject2Redis(final String key, final Object value) {
boolean flag = true;
Jedis jedis = null;
try {
jedis = RedisPool.getJedis();
byte[] val = SerializeUtils.serialize(value);
final String s = DBPREFIX + key;
String ret = jedis.set(s.getBytes(), val);
flag = ret.equals(OP_REDIS_SUCCESS) ? true : false;
} catch (Exception e) {
flag = false;
RedisPool.brokenResource(jedis);
logger.error(e.getMessage());
} finally {
RedisPool.retResource(jedis);
}
return flag;
}
/**
*
* @param key
* @param value
* @param nxxx not use
* NX|XX
* NX-- Only set the key if it does not already exist.
* XX-- Only set the key if it already exist.
* @param expx not use
* EX|PX
* EX = seconds; PX = milliseconds
* @param time
* @return
* @throws BusinessServiceException
*/
public static boolean setObject2Redis(final String key, final Object value,
final String nxxx, final String expx, final long time) {
boolean flag = true;
Jedis jedis = null;
try {
jedis = RedisPool.getJedis();
byte[] val = SerializeUtils.serialize(value);
final String s = DBPREFIX + key;
/**
String ret = jedis.set(s.getBytes(), val, nxxx.getBytes(), expx
.getBytes(), time);
**/
String ret = jedis.set(s.getBytes(),val);
jedis.expire(s.getBytes(), (int) time);
flag = ret.equals(OP_REDIS_SUCCESS) ? true : false;
} catch (Exception e) {
e.printStackTrace();
flag = false;
RedisPool.brokenResource(jedis);
logger.error(e.getMessage());
} finally {
RedisPool.retResource(jedis);
}
return flag;
}
/**
* 异步管道方式
* @param hashMap
* @return
*/
public static boolean setObject4Pipelined(final Map
本文共计1807个文字,预计阅读时间需要8分钟。
javapackage com.isoftstone.pcis.util;
import java.io.IOException;import java.io.InputStream;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Properties;import org.apache.log4j.Logger;
public class RedisHelper { private static final Logger LOGGER=Logger.getLogger(RedisHelper.class); private Properties properties;
public RedisHelper() { loadProperties(); }
private void loadProperties() { InputStream inputStream=this.getClass().getClassLoader().getResourceAsStream(redis.properties); properties=new Properties(); try { properties.load(inputStream); } catch (IOException e) { LOGGER.error(Failed to load properties, e); } }
public String getProperty(String key) { return properties.getProperty(key); }
public List getPropertyList(String key) { return properties.getProperty(key).split(,); }
public Map getPropertyMap(String key) { String[] keyValue=properties.getProperty(key).split(,); Map map=new HashMap(); for (String entry : keyValue) { String[] pair=entry.split(:); map.put(pair[0].trim(), pair[1].trim()); } return map; }}
RedisHelper.javapackage com.isoftstone.pcis.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;
/**
*
* @author qingzhu@isoftstone.com Redis Helper 类处理Redis基本操作
*
*/
public class RedisHelper {
static Logger logger = Logger.getLogger(RedisHelper.class);
public static String getStringByKey(final String key) {
return (String) getObjectByKey(key);
}
public static Object getObjectByKey(final String key) {
Jedis jedis = null;
try {
jedis = RedisPool.getJedis();
final String s = DBPREFIX + key;
byte[] ret = jedis.get(s.getBytes());
if (ret != null) {
return SerializeUtils.deserialize(ret);
} else {
return null;
}
} catch (Exception e) {
RedisPool.brokenResource(jedis);
logger.error(e.getMessage());
} finally {
RedisPool.retResource(jedis);
}
return null;
}
public static boolean setObject2Redis(final String key, final String value) {
return setObject2Redis(key, (Object) value);
}
public static boolean setObject2Redis(final String key, final Object value) {
boolean flag = true;
Jedis jedis = null;
try {
jedis = RedisPool.getJedis();
byte[] val = SerializeUtils.serialize(value);
final String s = DBPREFIX + key;
String ret = jedis.set(s.getBytes(), val);
flag = ret.equals(OP_REDIS_SUCCESS) ? true : false;
} catch (Exception e) {
flag = false;
RedisPool.brokenResource(jedis);
logger.error(e.getMessage());
} finally {
RedisPool.retResource(jedis);
}
return flag;
}
/**
*
* @param key
* @param value
* @param nxxx not use package com.isoftstone.pcis.util;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
import redis.clients.util.Pool;
public class RedisPool {
static Logger logger = Logger.getLogger(RedisPool.class);
private static Pool redisPool;
private static String RESOURCENAME = "/jdbc.properties";
private static RedisProp redisProp;
/**
* redis 单节点
* @author qingzhu@isoftstone.com
* @return
*/
protected static Jedis getJedis() {
Jedis jedis = null;
//read redis conf
RedisPool.readRedisPorp();
if(redisProp.isRedisOnOff()){
try{
Pool pool = getJedisPool();
jedis = (Jedis) pool.getResource();
jedis.select(redisProp.getRedisDbIndex());
}catch(Exception ex){
logger.error(ex.getMessage());
//如果连接出错redisPool 设置null 重新连接另台IP地址
redisPool.destroy();
redisPool = null;
//再次获取服务地址
Pool pool = getJedisPool();
jedis = (Jedis) pool.getResource();
jedis.select(redisProp.getRedisDbIndex());
}
}
return jedis;
}
/**
* redis 集群方式
* @author qingzhu@isoftstone.com
* @return
*/
@Deprecated
private static ShardedJedis getShardedJedis() {
ShardedJedis shardedJedis = null;
//read redis conf
RedisPool.readRedisPorp();
if(redisProp.isRedisOnOff()){
Pool pool = getShardedPool();
shardedJedis = (ShardedJedis) pool.getResource();
Collection
##mysql
#jdbc.url=jdbc:mysql://localhost:3306/jfile
#jdbc.username=root
#jdbc.password=adminx
#jdbc.driverClassName=com.mysql.jdbc.Driver
MY_DATA_SOURCE_JNDI=jdbc/pcis
##oracle
jdbc.url=jdbc:oracle:thin:@10.15.22.80:1521:mytest1
jdbc.username=PCIS_TEST
jdbc.password=PCIS_TEST
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
#redis
#########redis server ON OFF####################
REDIS_ON_OFF=on
#########redis server ip ads####################
REDIS_IP=10.15.22.120;10.15.22.121
#########redis server port #####################
REDIS_PORT=6379;6379
#########max wait millis ms 5*1000##############
REDIS_MAXWAITMILLIS=5000
#########redis server port #####################
REDIS_MAXTOTAL=1000
#########redis server port #####################
REDIS_MINTIDLE=8
REDIS_MAXTIDLE=100
######### redis db index 0-16 ##################
REDIS_DBINDEX=1
######### redis db prefix ##################
REDIS_DBPREFIX=ZFMI_
* NX|XX
* NX-- Only set the key if it does not already exist.
* XX-- Only set the key if it already exist.
* @param expx not use
* EX|PX
* EX = seconds; PX = milliseconds
* @param time
* @return
* @throws BusinessServiceException
*/
public static boolean setObject2Redis(final String key, final Object value,
final String nxxx, final String expx, final long time) {
boolean flag = true;
Jedis jedis = null;
try {
jedis = RedisPool.getJedis();
byte[] val = SerializeUtils.serialize(value);
final String s = DBPREFIX + key;
/**
String ret = jedis.set(s.getBytes(), val, nxxx.getBytes(), expx
.getBytes(), time);
**/
String ret = jedis.set(s.getBytes(),val);
jedis.expire(s.getBytes(), (int) time);
flag = ret.equals(OP_REDIS_SUCCESS) ? true : false;
} catch (Exception e) {
e.printStackTrace();
flag = false;
RedisPool.brokenResource(jedis);
logger.error(e.getMessage());
} finally {
RedisPool.retResource(jedis);
}
return flag;
}
/**
* 异步管道方式
* @param hashMap
* @return
*/
public static boolean setObject4Pipelined(final Map

