Nginx前驅學習

2021-10-24 23:07:30 字數 3269 閱讀 7052

快取主要分為分布式快取和本地快取。

分布式快取無論單台或者多台都可以正常啟用。

儲存方式不同: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...