<dependency>
<groupId>io.codis.jodis</groupId>
<artifactId>jodis</artifactId>
<version>0.3.1</version>
</dependency>
<dependency>
<groupId>com.wandoulabs.jodis</groupId>
<artifactId>jodis</artifactId>
<version>0.2.2</version>
</dependency>
<!-- 扫描文件(自动将servicec层注入) -->
<context:component-scan base-package="com.deppon.service"/>
<bean id="poolConfigRedis" class="redis.clients.jedis.JedisPoolConfig">
<!--最大分配的对象树 -->
<property name="maxTotal" value="1024"></property>
<!--最大能够保持idle状态的对象数 -->
<property name="maxIdle" value="0"></property>
<!--当缓存池内没有返回数据时,最大等待时间 -->
<property name="maxWaitMillis" value="1000"></property>
<!-- 当调用borrow Object方法时,是否进行有效性检查 -->
<property name="testOnBorrow" value="false"></property>
<!--当调用return Object方法时,是否进行有效性检查 -->
<property name="testOnReturn" value="false"></property>
</bean>
<bean id="redisClient" class="com.deppon.cache.store.RedisClient">
<property name="host" value="10.230.25.56:2181,10.230.25.57:2181,192.168.67.206:2181"></property>
<property name="timeout" value="3000"></property>
<property name="zkProxyDir" value="/jodis/codis-demo"></property>
<property name="poolConfig" ref="poolConfigRedis"></property>
</bean>
<bean id="springContextUtil" class="com.deppon.util.SpringContextUtil" lazy-init="false"/>
public class SpringContextUtil implements ApplicationContextAware{
private static ApplicationContext applicationContext; // Spring应用上下文环境
/**
* 实现ApplicationContextAware接口的回调方法,设置上下文环境
* @param applicationContext
* @throws BeansException
*/
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
SpringContextUtil.applicationContext = applicationContext;
}
/**
* @return ApplicationContext
*/
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
/**
* 获取对象
* @param name
* @return Object 一个以所给名字注册的bean的实例
* @throws BeansException
*/
public static Object getBean(String name) throws BeansException {
return applicationContext.getBean(name);
}
/**
* 获取类型为requiredType的对象
* 如果bean不能被类型转换,相应的异常将会被抛出(BeanNotOfRequiredTypeException)
* @param name bean注册名
* @param requiredType 返回对象类型
* @return Object 返回requiredType类型对象
* @throws BeansException
*/
public static <T> T getBean(String name, Class<T> requiredType) throws BeansException {
return (T) applicationContext.getBean(name, requiredType);
}
/**
* 如果BeanFactory包含一个与所给名称匹配的bean定义,则返回true
* @param name
* @return boolean
*/
public static boolean containsBean(String name) {
return applicationContext.containsBean(name);
}
/**
* 判断以给定名字注册的bean定义是一个singleton还是一个prototype。
* 如果与给定名字相应的bean定义没有被找到,将会抛出一个异常(NoSuchBeanDefinitionException)
* @param name
* @return boolean
* @throws NoSuchBeanDefinitionException
*/
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException {
return applicationContext.isSingleton(name);
}
/**
* @param name
* @return Class 注册对象的类型
* @throws NoSuchBeanDefinitionException
*/
public static Class<?> getType(String name) throws NoSuchBeanDefinitionException {
return applicationContext.getType(name);
}
/**
* 如果给定的bean名字在bean定义中有别名,则返回这些别名
* @param name
* @return
* @throws NoSuchBeanDefinitionException
*/
public static String[] getAliases(String name) throws NoSuchBeanDefinitionException {
return applicationContext.getAliases(name);
}
}
public class RedisUtils<V>{
Logger logger = Logger.getLogger(RedisUtils.class);
private static RedisClient redisClient;
public void save(String key,V v){
redisClient=(RedisClient) SpringContextUtil.getBean("redisClient");
Jedis jedis=null;
try{
jedis=redisClient.getResource();
String svalue = JSON.toJSONString(v);
jedis.rpush(key, svalue);
}catch(Exception e){
logger.error(e.getMessage());
}finally{
if(null != jedis){
jedis.close();
}
}
}
public List<V> get(String key){
if(key==null || "".equals(key)){
throw new BusinessException("key 值不可为空");
}
redisClient=(RedisClient) SpringContextUtil.getBean("redisClient");
List<V> ls=new ArrayList<V>();
Jedis jedis=null;
try {
jedis=redisClient.getResource();
List<String> list=jedis.lrange(key, 0, -1);
for (String str : list) {
JSONObject json=JSON.parseObject(str);
PdamPositionEntity pda=JSONObject.toJavaObject(json, PdamPositionEntity.class);
System.out.println(pda.getCourierCode());
ls.add((V) pda);
}
} catch (Exception e) {
logger.error(e.getMessage());
}finally{
if(null != jedis){
jedis.close();
}
}
return ls;
}
}
调用codis工具栏保存数据:
public class PdamPositionService extends RedisUtils<PdamPositionEntity> implements IPdamPositionService {
@Resource
private PdamPositionDao pdamPositionDao;
private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
public void insertPdam(PdamPositionEntity pdamEntity) {
pdamPositionDao.insertPdam(pdamEntity);
save(pdamEntity.getCourierCode()+sdf.format(new Date()), pdamEntity);
get(pdamEntity.getCourierCode()+sdf.format(new Date()));
}
}