為啥用redis解決會話呢?

      網(wǎng)友投稿 738 2025-04-01

      什么是會話?


      會話可簡單理解為:用戶開一個(gè)瀏覽器,點(diǎn)擊多個(gè)超鏈接,訪問服務(wù)器多個(gè)web資源,然后關(guān)閉瀏覽器,整個(gè)過程稱之為一個(gè)會話。

      ?會話過程中要解決的一些問題?

      –每個(gè)用戶不可避免各自會產(chǎn)生一些數(shù)據(jù),程序要想辦法為每個(gè)用戶保存這些數(shù)據(jù)。

      –例如:用戶點(diǎn)擊超鏈接通過一個(gè)servlet購買了一個(gè)商品,程序應(yīng)該想辦法保存用戶購買的商品,以便于用戶點(diǎn)結(jié)帳servlet時(shí),結(jié)帳servlet可以得到用戶購買的商品為用戶結(jié)帳。

      ?Cookie

      –Cookie是客戶端技術(shù),程序把每個(gè)用戶的數(shù)據(jù)以cookie的形式寫給用戶各自的瀏覽器。當(dāng)用戶使用瀏覽器再去訪問服務(wù)器中的web資源時(shí),就會帶著各自的數(shù)據(jù)去。這樣,web資源處理的就是用戶各自的數(shù)據(jù)了。

      ?HttpSession

      –Session是服務(wù)器端技術(shù),利用這個(gè)技術(shù),服務(wù)器在運(yùn)行時(shí)可以為每一個(gè)用戶的瀏覽器創(chuàng)建一個(gè)其獨(dú)享的HttpSession對象,由于session為用戶瀏覽器獨(dú)享,所以用戶在訪問服務(wù)器的web資源時(shí),可以把各自的數(shù)據(jù)放在各自的session中,當(dāng)用戶再去訪問服務(wù)器中的其它web資源時(shí),其它web資源再從用戶各自的session中取出數(shù)據(jù)為用戶服務(wù)。

      總結(jié):cookie存在客戶端,session存在服務(wù)器端

      通常結(jié)合使用。

      我們先用sprintboot演示一下cookie和session操作

      @RequestMapping(path = "/cookie/set",method = RequestMethod.GET)

      @ResponseBody

      public String setCookie(HttpServletResponse httpServletResponse){

      Cookie cookie=new Cookie("code", CommunityUtil.generateUUID());

      cookie.setPath("/Community/alpha");

      cookie.setMaxAge(60*10);

      httpServletResponse.addCookie(cookie);

      return "set cookie";

      }

      @RequestMapping(path = "/cookie/get",method = RequestMethod.GET)

      @ResponseBody

      public String getCookie(@CookieValue("code") String code){

      System.out.println(code);

      return "get cookie";

      }

      @RequestMapping(path = "/session/set", method = RequestMethod.GET)

      @ResponseBody

      public String setSession(HttpSession session){

      session.setAttribute("id",1);

      session.setAttribute("name","Test");

      return "set session";

      }

      為啥用redis解決會話呢?

      @RequestMapping(path = "/session/get", method = RequestMethod.GET)

      @ResponseBody

      public String getSession(HttpSession session) {

      System.out.println(session.getAttribute("id"));

      System.out.println(session.getAttribute("name"));

      return "get session";

      }

      隨著服務(wù)器要處理的請求越來越多,我們不得不分布式部署,減小服務(wù)器壓力。

      為了負(fù)載均衡,我們一般采用nginx來分發(fā)請求給各個(gè)服務(wù)器處理

      但是這樣session是無法共享的。

      (粘性session)

      你可以設(shè)置nginx的分配策略,下次同一個(gè)還讓同一個(gè)服務(wù)器來處理

      但是很顯然,這就和分布式和nginx初衷違背了:負(fù)載很難保證均衡。

      (同步session)

      一臺服務(wù)器的session給所有服務(wù)器復(fù)制一份

      第一,性能不好。第二,產(chǎn)生了一定的耦合

      (專門session)

      專門一臺服務(wù)器來解決,存session,其它服務(wù)器來這個(gè)服務(wù)器取session再用。

      但是也有問題:你這個(gè)服務(wù)器掛了怎么辦?別的服務(wù)器都是依賴這個(gè)服務(wù)器工作的。我們分布式部署本來就是為了解決性能的瓶頸啊。

      很容易想到,我們把那個(gè)處理session的服務(wù)器搞個(gè)集群:

      更不行,想想就知道,本來就是為了解決分布式部署的問題,你把單獨(dú)解決session的服務(wù)器又搞集群,和之前有什么區(qū)別呢?還不如一個(gè)服務(wù)器存一份簡單呢。

      (存數(shù)據(jù)庫)

      可以,但是傳統(tǒng)的關(guān)系數(shù)據(jù)庫是存到硬盤里,速度太慢。

      (nosql)

      最終,我們的主流辦法使用nosql數(shù)據(jù)庫,比如redis,來解決這個(gè)問題的。

      Redis 數(shù)據(jù)庫

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Office 2010在截圖和摳圖方面的三個(gè)實(shí)用技巧(office有鬼)
      下一篇:win10 wps 如何重新設(shè)定(win10重裝系統(tǒng))
      相關(guān)文章
      亚洲日产韩国一二三四区| 亚洲av无码成人精品区| 亚洲人成精品久久久久| www亚洲一级视频com| 性色av极品无码专区亚洲| 亚洲国产精品无码第一区二区三区| 在线观看亚洲AV日韩AV| 久久精品亚洲AV久久久无码| 亚洲av无码国产综合专区| 亚洲av成人一区二区三区| 亚洲综合色7777情网站777| 亚洲一区二区三区播放在线| 亚洲av无码片在线观看| 亚洲 欧洲 自拍 另类 校园| 自拍日韩亚洲一区在线| 中日韩亚洲人成无码网站| 亚洲人片在线观看天堂无码| 久久精品国产亚洲AV| 国产成人亚洲精品播放器下载| 国产亚洲精品第一综合| 亚洲性日韩精品一区二区三区 | 亚洲伊人久久大香线焦| 亚洲一卡2卡3卡4卡国产网站| 亚洲人成网网址在线看| 久久亚洲国产最新网站| 亚洲国产精品无码第一区二区三区 | 久久久久亚洲国产| 亚洲成av人片在线天堂无| 18禁亚洲深夜福利人口| 亚洲av无码乱码在线观看野外 | 久久综合亚洲鲁鲁五月天| 亚洲国产一区在线观看| 亚洲综合色丁香婷婷六月图片| 亚洲国产综合AV在线观看| 国产成人久久精品亚洲小说| 国产乱辈通伦影片在线播放亚洲| 亚洲日韩精品A∨片无码| 色婷婷六月亚洲婷婷丁香| 亚洲国产精品久久人人爱| 亚洲熟女www一区二区三区| 另类专区另类专区亚洲|