- Redis是一个Key-Value存储系统
- Redis的数据全部缓存在内存里
- Redis可以通过网络实现主从同步
-
Redis支持丰富的数据类型可实现持久化
今天用redis实现导航栏的维护:
在自己电脑上使用时,每次用redis技术需要启动他的服务器(redis-server.exe)
下面就是我用redis技术实现导航栏的代码:
category是这个商品的名字,用的mvc思想实现的:CategoryDao
public class CategoryDao {
public List<Category> findAllCategories() throws SQLException{
QueryRunner qr=new QueryRunner(DataSourceUtils.getDataSource());
String sql="select * from category";
return qr.query(sql, new BeanListHandler<Category>(Category.class));
}
CategoryService代码:
public class CategoryService {
private CategoryDao cd=new CategoryDao();
public List<Category> findAllCategories(){
try {
return cd.findAllCategories();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
CategoryServlet代码:
public class CategoryServlet extends BaseServlet {
private CategoryService cs = new CategoryService();
public void findAllCategory(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
Jedis jedis=JedisPoolUtils.getJedis();
String json_list=jedis.get("json_list");
if(json_list == null){
List<Category> list=cs.findAllCategories();
json_list=JSONArray.fromObject(list).toString();
jedis.set("json_list",json_list);
}
response.getWriter().print(json_list);
}
}
前台代码主要是用ajax实现局部刷新来对导航栏的维护:
<script>
$(function() {
$.ajax({
url : "${pageContext.request.contextPath}/category?method=findAllCategory",
type : "post",
dataType : "json",
success : function(data) {
var str = "";
$.each(data, function(i, n) {
str += "<li><a href='product_list.jsp'>"+ n.cname + "</a></li>";
+ n.cname + "</a></li>";
$("#ul").html(str);
});
},
error : function(error) {
alert(status.status);
}
});
});
</script>
后台有一个非常重要的东西是把数据转化成json对象存到redis缓存中。