在刷新的很多时候,我们一般都要去重新访问数据库,这样一来,如果访问量过大的话,会造成访问缓慢的情况。这个时候就可以使用Redis来做相应的缓存,把第一次从数据库中获取的数据存入Redis中,后面的访问就会从Redis(本地内存)中读取相应的数据,加快刷新的速度。
例如:我们做一个产品分类的导航栏
直接上代码吧
// 这是servlet类中方法,
public String findAllCats(HttpServletRequest request, HttpServletResponse response) throws Exception {
// 在redis中获取全部分类信息
Jedis jedis = JedisUtils.getJedis();
String jsonStr = jedis.get("allCats");
System.out.println("jedis中的"+jsonStr);
if (null == jsonStr || "".equals(jsonStr)) { // Redis缓存中没有数据
// 调用业务层的获取全部分类
CategoryService categoryService = new CategoryServiceImp();
// 这里访问数据库(里边具体实现就不贴了)
List<Category> list = categoryService.getAllCats();
// 将全部分类转为JSON格式的数据
jsonStr = JSONArray.fromObject(list).toString();
System.out.println(jsonStr);
// 将获取到的JSON格式数据存入到redis
jedis.set("allCats", jsonStr);
}
// 将全部分类信息响应到客户端
// 告诉浏览器本次响应的数据格式是JSON格式的字符串
response.setContentType("application/jspn;charset=utf-8");
response.getWriter().print(jsonStr);
JedisUtils.closeJedis(jedis);
return null;
}
jsp中使用了Ajax的异步处理:
<script type="text/javascript">
$(function() {
// 向服务端CategoryServlet_>getAllCats发起ajax请求,服务端经过处理,
var url = "${pageContext.request.contextPath}/CategoryServlet";
var obj = {"method":"findAllCats"};
$.post(url,obj,function(data){
// 将所有分类信息以JSON格式数据返回,获取到的所有分类绑定在页面显示分类区域
$.each(data,function(i,obj){
var li = "<li><a href='#'>"+obj.cname+"</a></li>";
$("#myUl").append(li);
});
},"json");
});
</script>
其中
- 拼接的地方:
<ul class="nav navbar-nav" id="myUl">
<%--
id="myUl"是上面Ajax拼接的地方,就是现实分类栏的区域
--%>
</ul>
Redis工具类的代码:
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class JedisUtils {
//创建连接池
private static JedisPoolConfig config;
private static JedisPool pool;
static{
config=new JedisPoolConfig();
config.setMaxTotal(30);
config.setMaxIdle(2);
pool=new JedisPool(config, "127.0.0.1", 6379); // 使用本地的ip
}
//获取连接的方法
public static Jedis getJedis(){
return pool.getResource();
}
//释放连接
public static void closeJedis(Jedis j){
j.close();
}
}
windows下的Jedis软件以及jar下载:
链接:https://pan.baidu.com/s/1nnKYYoDh6murUdY8UmvnBA
提取码:74vu
Redis服务启动:
直接双击运行:redis-server.exe
Redis简单的key查询与删除(运行redis-cli.exe):
ok到这里了