<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java要多思考下

    成長^_^

       ::  :: 新隨筆 ::  ::  :: 管理 ::
      33 隨筆 :: 0 文章 :: 19 評論 :: 0 Trackbacks
          使用場景一:高頻率使用但不頻繁更新的業(yè)務數據。由于不頻繁更新,所以可以在系統(tǒng)啟動時,從數據庫中加載,放入redis。如果更新,需重啟服務,當然這比較笨。更好的做法下面會列出。

            使用場景二:高頻率使用更新還算頻繁的業(yè)務數據。由于有一定頻率的更新,所以可以在用戶訪問時,查詢緩存,如果沒有值,則從數據庫中加載入redis,并設置過期時間。這樣,過期時間內的訪問就都走緩存了。這種策略也有問題,就是大并發(fā)訪問時,容易造成數據庫瞬間高并發(fā)讀,如果程序再寫的爛點,查詢語句再復雜點,那可能造成數據庫死鎖。更好的辦法,下面列出。

            使用場景三:高頻率使用高頻率更新的業(yè)務數據。這種數據就需要在寫入數據庫的同時放入緩存,不設置過期時間,這樣用戶每次訪問都走緩存。為了保證數據的一致,還有數據對內存的占用,還需要有一些額外的策略。

            對于場景一:更好的做法是在系統(tǒng)啟動的同時,利用redis的pub/sub功能,啟動一個監(jiān)聽通道。當數據發(fā)生更新時,往通道publish一個消息,系統(tǒng)接收到消息后,重新從數據庫中加載數據,放入緩存。這樣系統(tǒng)實現了無中斷的更新緩存。

            對于場景二:更好的做法是單獨啟動一個定時任務,把定時任務看做是一個用戶,他每隔一段時間從數據庫中讀取數據,然后放入緩存。而前臺用戶訪問的始終是緩存數據,不會觸發(fā)數據庫的相關操作。這個策略也可以用在場景一中。

            當然,使用memcached也可以實現類似的功能,但是我更喜歡用redis,基于他強大的性能和數據結構,可以實現多種復雜的業(yè)務需求。

     
    posted on 2013-04-19 18:49 java要多思考下 閱讀(3678) 評論(0)  編輯  收藏 所屬分類: 技術研究
    主站蜘蛛池模板: 亚洲精品第一国产综合野| 99蜜桃在线观看免费视频网站| 久久亚洲私人国产精品| 哒哒哒免费视频观看在线www| 24小时免费看片| 水蜜桃视频在线观看免费播放高清| 亚洲国产成人AV在线播放 | 久久精品国产亚洲av品善| 久久亚洲国产成人精品性色| 亚洲午夜精品第一区二区8050| 免费看美女被靠到爽的视频| 最近中文字幕mv免费高清视频8 | 国内精品99亚洲免费高清| 日韩精品视频免费网址| 美女被免费喷白浆视频| 18禁黄网站禁片免费观看不卡| a毛片视频免费观看影院| 一级人做人a爰免费视频| 国产av无码专区亚洲av毛片搜| 亚洲一卡一卡二新区无人区| 亚洲乱码中文论理电影| 91嫩草亚洲精品| 亚洲精品综合久久中文字幕| 亚洲成人午夜在线| 国产亚洲一区二区三区在线观看| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 午夜免费福利在线| 一二三四在线观看免费高清中文在线观看| 亚洲一级毛片免费看| 中文字幕视频免费| 3344免费播放观看视频| 最近2018中文字幕免费视频 | 久久久无码精品亚洲日韩按摩 | 一区二区在线免费观看| 免费成人在线视频观看| 久久国产精品免费观看| 99久久精品免费精品国产| 2020因为爱你带字幕免费观看全集| 免费无遮挡无码永久视频| 中文字幕视频免费| 手机在线毛片免费播放|