使用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到這裏了

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