分類數據展示

category
分類的數據在每一次頁面加載後都會重新請求數據庫來加載,對數據庫的壓力比較大,而且分類的數據不會經常產生變化,所有可以使用redis來緩存這個數據。

在這裏插入圖片描述

@Override
    public List<Category> findAll() {


        //每一次加載首頁,都有從數據庫去讀取分類的信息
        //缺點:服務器壓力大
        //用戶體驗差(等待頁面整個加載完)
        //改進:使用redis技術
        /***
         * 1.應該從JedisUtils獲取redis的客戶端的對象:Jedis
         */
        Jedis jedis = JedisUtil.getJedis();

        //2.獲取到客戶端對象,操作redis數據庫
        //應該先判斷redis是否存在一個key名字"category"的信息範圍(Set集合)
       // zrange key 0 -1
        //查詢當前key中記錄的所有信息   //zadd key field  value
       // Set<String> categorys = jedis.zrange("category", 0, -1);

        //改進:獲取分類id
        Set<Tuple> categorys = jedis.zrangeWithScores("category",0,-1) ;

        //reids 數據結構:sortedset

        //聲明List<Category>集合對象
        List<Category> list = null ;
        //3.判斷當前redis是否存在categorys集合數據
        if(categorys==null || categorys.size()==0){
            System.out.println("從數據庫中獲取分類信息...");
            //調用CategoryDao中查詢所有分類信息
            list = categoryDao.findAll() ; //第一次從數據庫如果查詢到了,將信息直接存儲到redis中
            //遍歷集合,獲取每一個Category對象
            for(int i = 0 ; i <list.size() ; i++){
                //將當前cid和cname存儲到redis中
                //查詢旅遊分類的value

                jedis.zadd("category",list.get(i).getCid(),list.get(i).getCname()) ;
            }

        }else{
            //不爲空,將Set<String>---->List<Category>
            System.out.println("從redis數據庫中獲取分類信息....");
            //創建List<Category>對象
            list = new ArrayList<Category>() ;
            //創建Category對象
            /*Category category = new Category() ;
            for(String name:categorys){
//                    category.setCid(category.getCid()); //0
                    category.setCname(name);
                    list.add(category) ;
            }*/

          ;
            for(Tuple tuple:categorys){
                Category category = new Category() ;
                //Tuple :getElement():獲取成員信息(分類名稱)
                //獲取score(對應的分類id)
                category.setCname(tuple.getElement());
                category.setCid((int)tuple.getScore());
                //將分類的實體對象添加到List集合
                list.add(category) ;
            }


        }

//        return categoryDao.findAll();

        return list ;
    }

前臺代碼

   //頁面載入事件
    $(function () {
        //直接發送一個異步get提交
        $.get("user/findUser",{},function (data) {
            //接收服務器響應過來的User的姓名{uid:xx,username:xx,password:xx,name:'張三'}
            var  msg = "歡迎回來,"+data.name ;
            $("#span_username").html(msg) ;
        }) ;

        //發送ajax,加載index.html的時候,應該從後臺查詢數據庫獲取分類信息
        $.get("category/findAll",{},function (data) {
            //data:list集合
            var lis = "" ;
            lis += ' <li class="nav-active"><a href="index.html">首頁</a></li>' ;
            // <li><a href="route_list.html">門票</a></li>
            //將當前的data遍歷
            for(var i = 0 ; i < data.length;i++){
                //點擊分類信息的時候,執行跳轉到列表頁面,應該傳遞分類id(cid)
                lis+='<li><a href="route_list.html?cid='+data[i].cid+'">'+data[i].cname+'</a></li>' ;
            }
            //<li><a href="favoriterank.html">收藏排行榜</a></li>
            lis += '<li><a href="favoriterank.html">收藏排行榜</a></li>' ;

            //將lis的信息作爲ul標籤的子標籤(文本內容)
            $("#category").html(lis) ;

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