在刷新的很多時候,我們一般都要去重新訪問數據庫,這樣一來,如果訪問量過大的話,會造成訪問緩慢的情況。這個時候就可以使用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到這裏了