redis的应用

目录

使用redis处理首页分类数据

打开首页,发送ajax请求

java操作redis


前言

这里只会讲解redis 的应用,redis的基础使用

https://blog.csdn.net/middleware2018/article/details/80355418

 https://blog.csdn.net/yzj17025693/article/details/81660693

使用redis处理首页分类数据

因为首页会有很多人访问,所以有很高的并发量,不可能使用session或者request来存储分类信息

然后再用EL表示访问出来,显然是不可行,直接访问数据库,肯定会让数据库炸了.所以这时候就需要使用redis

打开首页,发送ajax请求

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>
<html>
<head>
<!-- 注意一下,引入jquery,在当前路径目录下的,前面加./ -->
<script type="text/javascript" src="./js/jquery-1.11.3.min.js"></script>
<script>

			$(function(){
// 				下面一大串,其实只是在处理字符串而已,var url=projectName+"/CategoryServlet" 这个才是重点
<%-- 				可以直接用 <%=path%>+"/CategoryServlet"  来替换 --%>
				var pathName=window.document.location.pathname;
				//substring 是截取指定索引之间的字符串,包头不包围
				//substr是返回指定索引的字符串,省略第2个参数,就是返回所有后面所有,这里过滤了第一个 /
				//indexOf是查找第一个出现的字符串, /example003store/index.jsp,因为源字符串是这样的,而上面substr排除第1个
				//就变成example003store/index.jsp,后面的+1是因为substring包头不包尾,这样就能处理成/example003store
				var projectName=pathName.substring(0,pathName.substr(1).indexOf('/')+1);
				
 				 var url=projectName+"/CategoryServlet"; 
 				 
				 var obj={"method":"findAllCats"}
				 $.post(url,obj,function(data){
						 //每次首页会通过ajax访问服务器获取分类信息,这样就不会丢失了
						 //返回json数据
						$.each(data,function(i,obj){
							 var li="<li><a href=''></a></li>"
							 $("#myUL").append(li);
						});
					},"json");
				 });
	</script>
</head>

<body>
	<ul id="myUL"></ul>
</body>
</html>

java操作redis

而在CategoryServlet里的findAllCats方法便是redis应用的重点了

这里redis用windows环境做测试

使用java操作redis还需要导入2个包

public class CategoryServlet extends BaseServlet
{
	private static Jedis jedis=null;
	static
	{
		// 创建redis连接池配置
		JedisPoolConfig config = new JedisPoolConfig();

		// 设置最大连接数
		config.setMaxTotal(30);

		// 设置最大空闲数
		config.setMaxIdle(10);

		// 设置最小空闲数
		config.setMinIdle(5);

		// 创建redis连接池
		JedisPool pool = new JedisPool(config, "127.0.0.1",6379);

		// 获取jedis资源,相当于获取单个连接
		 jedis = pool.getResource();
	}

	public String findAllCats(HttpServletRequest request, HttpServletResponse response) throws IOException 
	{
		//获取allCats里的数值,如果是第一次,那么allCats肯定不存在
		//返回的也是类似json形式的字符串
		String jsonStr=jedis.get("allCats");

		//如果allCats不存在hip或为空
		if (null==jsonStr||"".equals(jsonStr))
		{
			//调用业务层,查询数据库获取全部分类,这里我们就不查了,直接填充数据
			//Category类里就一个cid,一个cname
			List<Category>list=new ArrayList<Category>();
			list.add(new Category(1,"aa"));
			list.add(new Category(2,"bb"));	
			list.add(new Category(3,"cc"));	
			
			//把list转换成json
			jsonStr=JSONArray.fromObject(list).toString();
			//设置json到redis
			jedis.set("allCats", jsonStr);
		}
			//如果jsonStr存在内容,直接传输到客户端
			response.setContentType("application/json;charset=utf-8");
			response.getWriter().print(jsonStr);
		
		return null;
	}
}

猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/88562294