11.8 redis案例

11.8 redis案例(使用redis做缓存)

案例需求:
1、提供index.html页面,页面中有一个省份,下拉列表
2、当加载完页面后,发送ajax请求,加载所有省份

步骤:

1、用mysql数据库的方式完成查询,并显示到index.html页面上:
servlet代码:
//1、调用service查询
		ProvinceService pService=new ProvinceServiceImpl();
		List<Province> provinces=pService.findAll();
		//2、序列化list为json
		ObjectMapper mapper=new ObjectMapper();
		String json=mapper.writeValueAsString(provinces);
		//3、响应结果
		response.setContentType("application/json;charset=utf-8");
		response.getWriter().write(json);






index.html代码:
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="js/jquery.min.js" type="text/javascript" charset="utf-8"></script>
<script>
	$(function(){
		$.get("FindProvinceServet",{},function(data){
			//[{"id":1,"name":"北京"},{"id":2,"name":"上海"},{"id":3,"name":"广州"},{"id":4,"name":"陕西"}] 获取出来的是数组形式
			//1、获取select
			var province=$("#province");
			//2.遍历json 数组
			$(data).each(function(){
				//3、创建<option>
				var option="<option name='"+this.id+"'>"+this.name+"</option>"
				//4、调用select的append追加option
				province.append(option);
			});
			
			
		});
	});
</script>
</head>
<body>

	<select id="province">
		<option>---请选择省份---</option>
		
	</select>

</body>

注:
1、使用ajax返回的data数据,用jq的方式遍历,jq对象.each(function())
2、创造一个标签直接拼字符串:var option=""+this.name+""

2、用redis优化:

注意:使用redis缓存一些不经常发生变化的数据。
数据库的数据一旦发生变化,就需要更新缓存。
即:当数据库的表执行增删改查的相关操作时,需要将redis缓存数据清空,再次存入

因为省份不是经常变化的数据,每次从数据库中读取太浪费资源,所以考虑redis缓存思想。
在service和dao之间创建一个redis缓存:
如果缓存中没有数据:
1.1从数据库中查询数据
1.2将数据缓存到redis
1.3返回数据
如果缓存中有数据:
2.1直接返回数据
(注意:测试时一定不要忘了开启redis的服务器!!!!!!)

//在ProvinceServiceImpl中新增了一个函数:
//此函数返回的json字符串
public String findAllJson() {
		// TODO Auto-generated method stub
		Jedis jedis=JedisPoolUtils.getJedis();
		String province_json = jedis.get("province");
		if(province_json==null || province_json.length()==0) {
			//redis中没有数据
			System.out.println("redis中没有数据,查询数据库。。。");
			List<Province> provinces=pd.findAll();
			//转换成json字符串格式
			ObjectMapper mapper=new ObjectMapper();
			try {
				province_json = mapper.writeValueAsString(provinces);
			} catch (JsonProcessingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//将数据存储到redis中
			jedis.set("province", province_json);
			//关闭连接
			jedis.close();
		}else {
			System.out.println("redis中有数据,查询数据库。。。");
		}
		return province_json;
	}







servlet中直接调用此函数就可以了:
//1、调用service查询
		ProvinceService pService=new ProvinceServiceImpl();
		String json=pService.findAllJson();
		//3、响应结果
		response.setContentType("application/json;charset=utf-8");
		response.getWriter().write(json);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值