快取主要分為分布式快取和本地快取。
分布式快取無論單台或者多台都可以正常啟用。
儲存方式不同:memcache斷電後會掛掉,資料不能超過記憶體大小;redis有部分存在磁碟上,這樣能保證資料的永續性
資料支援型別:redis有複雜的資料型別;memcached對資料型別支援相對簡單
儲存值大小:redis最大可以達到512mb,memcache只有1mb
總結:通常情況下,如果是單機spring專案,會直接使用spring cache作為本地換噸,如果是分布式、環境一般會使用redis
不同專案操作的是同乙個redis,因此redis對於整個專案來說是全域性(分布式)的。
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-z2tkjzgl-1603180347878)(螢幕截圖 2020-10-18 151230.jpg)]
第二步在service包下,具體操作快取,@service下,具體寫@cacheable(cachenames,key)
寫具體要實現的業務邏輯**
@restcontroller控制返回形式,相當於controller+responsebody
package com.example.demo2;
import org.springframework.cache.annotation.enablecaching;
@enablecaching
public static void main(string args)
}
service層
package com.example.demo2.service;
import org.springframework.cache.annotation.cacheable;
import org.springframework.stereotype.service;
//操作快取
@service
public class userservice
}
controller層
package com.example.demo2.controller;
import com.example.demo2.service.userservice;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.controller;
import org.springframework.web.bind.annotation.restcontroller;
//使用快取
@restcontroller
public class usercontroller
}
redis有5大基礎資料型別:
string——字串型別
hash——字典型別
list——列表型別
set——集合型別
zset——有序集合型別
最常用的是字串和字典型別。
string型別
redis中儲存key1為hello,通過get方法獲取key1值
示例:set key1 hello
get key1
其他示例:set key1 hello ex 5(代表設定過期時間為5秒)
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-1nhzzdwp-1603180347880)(c:\users\67099\desktop\spring學習筆記\螢幕截圖 2020-10-18 161704.jpg)]
字串的常見使用場景:
字典型別
字典型別又被雜湊型別或者是雜湊表型別,它是將乙個鍵值(key)和乙個特殊的hash表關聯起來
map>結構
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-0abw6pwx-1603180347883)(c:\users\67099\desktop\spring學習筆記\螢幕截圖 2020-10-18 162848.jpg)]
列表型別
lpush list 1 2 3
lpop
集合型別sadd myset v1 v3 v2 v3
smembers set1
[外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳(img-3zlvjkki-1603180347884)(c:\users\67099\desktop\spring學習筆記\螢幕截圖 2020-10-18 165126.jpg)]
有序集合
zadd z1 30 xiaoming 40 xiaoli 50 laowang
zrange z1 0 -1
0 -1 就代表遍歷
使用場景:學生成績排名;粉絲列表,根據關注的先後時間排序
資料從記憶體儲存到磁碟的過程,目的是為了防止資料丟失。redis支援持久化,而memcached不支援。
redis持久化的方式有一下3種:
持久化策略設定
config set aof-use-rdb-preamble yes
rdb優點
rdb缺點
aof優點
aof缺點
混合持久化快取雪崩
短時間內,大量快取過期。
這樣相當於直接訪問資料庫了,對資料庫造成很大的影響,那麼如何解決這個問題呢?
快取穿透
查詢資料庫和快取都無資料,資料庫查詢無資料,因此每次都會擊中資料庫。
解決方案:無論資料庫是否返回資料,每次都把結果儲存在快取中,將空結果的快取時間設定的短一些。
快取擊穿
某個熱點快取,在某一時刻突然失效
解決方案:
加鎖排隊
設定永不過期
快取預熱
實現預熱的實現思路有一下三種:
1、把需要快取的方法寫在系統初始化的方法中,這樣系統在啟動的時候就會自動的載入資料並快取資料
2、把需要快取的方法掛載到某個頁面或後端介面上,手動觸發快取預熱
3、設定定時任務,定時自動進行快取預熱。
主從同步
從主節點做操作新增刪除等工作,其他從結點做讀取工作。(除主從,還可以從從)
哨兵可以用來監控主從同步伺服器結點,並在主從伺服器出現問題的時候實現自動容災恢復。
如果當redis cluster擁有兩個主從結點時,理論上效能提公升了兩倍。
Nginx前驅學習(預習)
快取主要分為分布式快取和本地快取。分布式快取無論單台或者多台都可以正常啟用。儲存方式不同 memcache斷電後會掛掉,資料不能超過記憶體大小 redis有部分存在磁碟上,這樣能保證資料的永續性 資料支援型別 redis有複雜的資料型別 memcached對資料型別支援相對簡單 儲存值大小 redi...
proactor 前驅 模式
前驅模式 proactor 是一種事件處理的軟體設計模式,其中長時間執行的活動在非同步部分中執行。當非同步部分完成後呼叫相應的處理程式。同步和非同步是針對應用程式和核心的互動而言的。同步 使用者程序觸發io操作後,等待或者輪詢檢視io操作是否完成。非同步 使用者程序觸發io操作後,繼續自己的工作,當...
前驅軸的position
關於前驅軸和position 已經討論過不少了,可總是意猶未盡哪!實在是它們隱含了太多東西。xml原檔案 張三 20 李四 21 王五 22 3 xslt檔案 轉換後的結果 張三 1 李四 2 王五 3 王五噢,看到了什麼,當我們用for each來輸出的時候,張三在前驅軸的position明明是1...