RedisUtil
package com.itheima.store.utils;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class RedisUtil {
private static JedisPoolConfig poolConfig = new JedisPoolConfig();
private static JedisPool pool ;
static{
//解析配置文件
try {
Properties properties = new Properties();
//使用类加载器 加载配置文件
properties.load(RedisUtil.class.getClassLoader().getResourceAsStream("redis.properties"));
int maxIdle =Integer.parseInt( properties.getProperty("maxIdle"));
int maxTotal =Integer.parseInt( properties.getProperty("maxTotal"));
int minIdle =Integer.parseInt( properties.getProperty("minIdle"));
String host =properties.getProperty("host");
int port =Integer.parseInt( properties.getProperty("port"));
poolConfig.setMaxIdle(maxIdle);
poolConfig.setMaxTotal(maxTotal);
poolConfig.setMinIdle(minIdle);
pool= new JedisPool(poolConfig,host, port);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
public static Jedis getConnection(){
return pool.getResource();
}
public static void close(){
pool.close();
}
}
redis.properties
maxIdle=20 maxTotal=100 minIdle=10 host=127.0.0.1 port=6379
应用案例
package com.itheima.store.service.impl; import java.sql.SQLException; import java.util.List; import com.itheima.store.dao.CategoryDao; import com.itheima.store.domain.Category; import com.itheima.store.service.CategoryService; import com.itheima.store.utils.BeanFactory; import com.itheima.store.utils.RedisUtil; import net.sf.json.JSONArray; import redis.clients.jedis.Jedis; public class CategoryServiceImpl implements CategoryService { private CategoryDao categoryDao=BeanFactory.getInstance(CategoryDao.class); @Override public String list() throws Exception { /*List<Category> list=categoryDao.findAll(); String result = JSONArray.fromObject(list).toString(); return result;*/ //////////////////////////////////使用redis作为缓存//////////////////////// //先获取连接 Jedis connection = RedisUtil.getConnection(); //先去查询redis String categories = connection.get("categories"); //如果redis没有数据 if(categories==null){ //查询数据库 List<Category> list=categoryDao.findAll(); System.out.println("查询数据库了"); String result = JSONArray.fromObject(list).toString(); //查出数据 不要直接返回 而是将此数据 放入redis 再返回 connection.set("categories", result); connection.close(); return result; }else{ //等再一次访问来的 那么redis是有数据 //从redis取出数据返回 connection.close(); return categories; } } }