使用Redis缓存代替每次刷新访问数据库

在刷新的很多时候,我们一般都要去重新访问数据库,这样一来,如果访问量过大的话,会造成访问缓慢的情况。这个时候就可以使用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到这里了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章