歡迎您來到潮人地東莞seo博客,本站專業免費分享多元化的seo網站優化技術干貨以及解答seo各種常見問題的博客網站

熱門關鍵詞: seo優化 seo推廣 seo技術 seo博客 seo網站推廣怎么做 seo怎么做 新手做seo怎么做
當前位置:seo博客首頁 > seo網站優化 >

網站優化seo:網絡緩存服務器有怎樣軟件,Redis緩存、持久性、高可用性

發布時間:2023-08-05 20:32:01 文章出處:潮人地東莞seo博客 作者:東莞seo博客 閱讀數量:

潮人地東莞seo博客小編下面跟大家分享關于網站優化seo:網絡緩存服務器有怎樣軟件,Redis緩存、持久性、高可用性等問題,希望seo專員在做seo優化的過程中有所幫助,內容僅供參考。

?

1、 Redis作為緩存服務器

Redis作為緩存服務器是許多企業的選擇之一。雖然技術非常成熟,但也存在一些問題。它指的是緩存滲透、緩存崩潰和緩存失效的問題,然后是分布式鎖。

1.1緩存滲透

seo博客相關推薦閱讀:seo優化推廣:seo排名推廣技術代做(seo推廣軟件代理)

在今天的項目中,大多數采用垂直MVC架構。服務層調用DAO層,然后DAO層查詢數據庫。Redis作為緩存服務器,在服務層調用DAO層進行查詢時首先查詢緩存服務器。如果存在,則直接返回數據。否則,它將查詢數據庫。從中可以看出,這樣做大大減少了磁盤I/O操作,并減輕了數據庫的壓力。

現在讓我們假設數據庫中有ID從1到1000的數據。現在,如果有人手動模擬ID為1001的請求,則緩存服務器中不存在數據,因此他們將查詢數據庫。那就有問題了。如果查詢數據庫有大量無效請求。這勢必會對數據庫造成難以承受的壓力,這就是所謂的緩存滲透。

如何解決?

網站優化seo:網絡緩存服務器有怎樣軟件,Redis緩存、持久性、高可用性

1.將查詢的空值直接保存到緩存服務器,但不建議這樣做,因為大量不同的請求ID也會查詢數據庫。

2.接口限流、降級和熔斷

在項目中,您必須限制重要接口的流量。對于上述惡意攻擊請求,您不僅必須限制流量,還必須做好降級和融合的準備。這可以有效地控制大量無效請求。

3.布隆過濾器

Bloomfilter類似于哈希集,用于快速確定集合中是否存在元素。它的典型應用場景是快速確定容器中是否存在密鑰,如果不存在則直接返回。Blum過濾器的關鍵是大多數企業選擇的哈希算法和容器大小。

1.2緩存故障

在高并發中,查詢一些熱點的值,但此時緩存剛剛過期,緩存丟失,導致大量請求直接落在數據庫上。此時,如此大量的請求可能會導致數據庫崩潰。

解決方案:

1.將熱點密鑰設置為永不過期。

2.使用互斥鎖。

以上兩種情況都屬于緩存失效,但有一些小細節。也就是說,多個緩存同時失敗,特別是在高并發期。為了避免多次緩存失敗的問題,我們可以在設置超時時使用固定時間+隨機時間。避免在緩存無法工作時大量查詢數據庫的請求。

1.3分布式鎖

通常,分布式鎖可以通過三種方式實現:1.樂觀數據庫鎖;2.基于ZooKeeper的分布式鎖;3.基于Redis的分布式鎖;這里只記錄了基于Redis的分布式鎖。

分布式鎖的要求:

互斥:確保在分布式應用程序集群中,同一鎖只能由一臺計算機上的一個線程同時執行。避免死鎖:當客戶端在持有鎖而未解鎖時崩潰時,它還可以確保其他客戶端可以鎖定。

首先請參見以下代碼:

公共列表<;商品>;GoodsManager(){System.out.println(“已調用業務層的GoodsManager方法”);return goodsDao.queryAllPage();//1.首先查詢緩存服務器List<;Goods>;goodsList=(List<redisTemplate。opsForValue()。獲取(“貨物”);if(goodsList==null){//2.應用分布式鎖RedisConnection conn=redisTemplate.getConnectionFactory().get-Connection();if(conn.setNX(“lock”.getBytes()),“1”.getBytes()){//3.為分布式鎖設置超時conn.expire(“lock“.getByte(),60);System.out.println(“查詢數據庫中的所有商品”);//4。緩存中沒有商品列表的數據goodsList=goodsDao。queryAllPage()//5.將結果放入緩存redisTemplate中。opsForValue()。set(“貨物”,goodsList);redisTemplate。快遞(“貨物”,5,TimeUnit.MI NUTES);//6.釋放分布式鎖conn.dl(“lock”.getBytes());}否則{try{Thread.sleep(50);goodsManager();}catch(InterruptedException e){e.printStackTrace();}}return goodsList;}else{//緩存服務器中商品列表的數據返回goodsList;}}

代碼設計思路:

1.請求調用方法。

2.進入Redis緩存,查詢是否存在。如果沒有,請查詢數據庫。

3.使用本機連接(setNX)獲取分布式鎖,然后設置超時。

設置超時時間的原因是,如果t

###2.1 Redis提供了兩種持久化方法:RDB:它是備份時Redis內存中的數據結構(我們稱之為快照)。AOF:用于在Redis執行寫入命令后,在一定條件下將執行的寫入命令依次保存在Redis文件中,然后依次執行這些保存的命令以回復Redis數據。

2.2 RDB原理分析

RDB持久性有兩種操作模式:持久性的手動操作。

save:在持久化完成之前,當前的Redis服務器將被阻止。應禁止在線使用。Bgsave:此觸發器方法派生一個子進程,該子進程負責持久化進程。因此,阻塞僅在分叉子進程時發生。

bgsave和save的最大區別是,bgsave不會阻止客戶端的寫入操作。然而,如果bgsave失敗,Redis將默認停止接受訪問操作,否則沒有人會注意到災難。如果你不想這樣做,你可以

停止寫入bgsave錯誤yes設置為no

另一種是自動觸發持久性。首先,我們可以在配置文件中配置快照規則。

保存900 1在900秒內執行寫入命令并使用快照備份

保存300 10在300秒內執行10個寫入命令并使用快照備份

保存60 10000在60秒內執行10000個寫入命令并使用快照備份

注意:當Redis執行備份命令時,禁止寫入該命令

2.3 AOF原理分析

一般來說,AOF的整個過程可以分為兩個步驟:一個是命令的實時寫入,另一個是重寫AOF文件以減小AOF文件的大小。

附加AOF文件的一般過程是:命令寫入-->;附加到aof_Buf(緩沖區)-->;同步到aof磁盤。為什么要先寫入buf緩沖區,然后將其同步到磁盤?因為實時寫入會帶來大量的磁盤I/O操作,這將大大降低系統性能。

有幾種關于AOF持久性的配置。

appendonly no是否啟用AOF備份。默江門神馬seo排名認值為no,并且未啟用。如果需要啟用,則更改為yes。Appendfilename“appendonly.aof”定義了append命令編寫的文件是appendonly aof#appendfsync始終意味著執行的每個Redis命令都將同步保存到aof文件中。性能會受到影響,但安全性很高。Appendfsync everysec evarysec(默認值)表示每秒執行一次同步,性能將得到提高,但安全性將降低,一秒鐘內的命令可能會丟失#Appendfsync no表示同步未同步。同步命令需要手動執行。性能有保證,但安全性差。

2.4 Redis內存回收策略

在Redis中,conf中的配置項maxmemory策略用于配置Redis的內存回收策略以及當內存達到最大值時的內存處理方法。

Redis提供六種內存消除策略

易失性lru:allkeys-lru:Volatile random:allkeys random:avolatile ttl:noevication(默認):

在內存回收機制中,LRU算法和TTl算法在Redis中都不是精確的計算,而是近似算法。默認情況下,Redis配置了探測最大內存樣本數,默認值為3。

3、 Redis高度可用

3.1、主從復制

當用戶數量非常大時,單個Redis肯定是不夠的。因此,我們更喜歡讀/寫分離。讀/寫分離的前提是讀操作比寫操作更頻繁。將數據長期放置在多個服務器上可以消除單個服務器上的壓力。

因此,服務器設置如下圖所示:

假設一臺服務器負責寫操作,其他三臺服務器負責讀操作,以實現單獨的寫緩存功能。然而,存在一個明顯的缺點,即讀取數據的其他三個服務器之間的數據無法同步。這將導致數據不一致。此時,有必要在它們之間進行數據交換。

簡要介紹主從復制的概念。如上圖所示,主機負責寫入數據,其他三臺從機負責讀取數據。當寫入數據時,更新的數據將根據配置的屬性自動復制到其他三個服務器,從而實現服務器之間的數據一致性

哨兵是一個獨立的過程。Sentinel將檢測多個Redis服務器,包括主服務器和從服務器。發送命令以使Redis服務器響應并檢查其運行狀態。當哨兵檢測到主機停機時,它會自動將從機切換到主機,然后通知其他從機修改配置文件并通過發布訂閱模式切換主機。為了實現哨兵的高可用性,可以將其配置為多哨兵模式,即多個哨兵進程在不同的服務器上運行,以檢測各種Redis服務器,并且哨兵也會相互監視。在多哨兵模式下,一旦主設備關閉,哨兵1在檢測到該結果時不會立即故障切換,但只有哨兵1的主管認為主設備不可用。當其他哨兵也檢測到主人不可用,并且有一定數量的哨兵時,將在哨兵之間進行投票。投票結果由哨兵發起,將執行切換操作。切換完成后,每個哨兵將能夠通過發布和訂閱來切換他們監視的服務器的主機。

3.哨兵模式配置

3.1,#配置哨兵配置文件:

redis/src/ssentinel.conf

3.2,#禁用保護模式

保護模式否

3.3,#配置主監控服務。最后2個表示當兩個或多個哨兵認為主服務不可用時將執行故障切換

Sentinel監控服務器名稱(用戶定義)主服務IP端口2

3.4,#定義服務密碼

Sentinel auth pass服務器名稱(同上)密碼

3.5,#啟動哨兵模式;

./redis sentinel sentinel.conf

4.其他相關配置

毫秒后哨兵關閉:當哨兵檢測到Redis服務時,當Redis服務在一毫秒內無法應答時,單個哨兵考慮的主觀離線時間默認為30秒。

Sentinel故障切換超時:指定故障切換運行的毫秒數。當該數字超過此數字時,故障切換將被視為失敗。默認值為3分鐘。長春百度seo優化排名

哨兵通知腳本:指定哨兵檢測到Redis實例異常時要調用的警報腳本。

3.3.碎片集群

分片集群的原理是多個緩存服務器兩兩通信,每個副本集有一個主實例和多個從實例。此外,每個副本集在數據庫中存儲一部分鍵值對,這解決了主從副本集中總數據存儲的最小實例的限制,并大大擴展了緩存服務器的大小。

結構圖如下:

1.碎片集群的特點

1.客戶端直接連接到Redis節點,不需要中間代理層。

2.Redis集群將所有物理節點映射到[0-136383]插槽,由集群負責維護。

3.所有Redis節點彼此互連(PING-ONG短視頻抖音seo排名前十機制),內部使用Gossip二進制協議優化數據傳輸。

4.當集群中超過一半的節點發生故障時,節點故障檢測生效。

==問題:Redis集群中內置了16384個哈希槽。Redis集群如何決定將密鑰放入哪個插槽==

當一個鍵值被放置在redis集群中時,redis首先使用crc16算法來計算該鍵的結果,然后將結果的剩余部分計算為16384。這樣,每個鍵將對應于一個編號為0-16383的哈希槽。redis將根據節點的數量大致相等地將哈希槽映射到不同的節點。

2.集群建設步驟

前提條件:

刪除appendonly。aof,轉儲。Redis/src下的rdb、nodes-6379.conf文件。

1.修改redis。conf,配置集群信息,并啟用集群,

Cluster enabled yes指定群集的配置文件,

群集配置文件節點port.conf

2.使用redis trib。rb來構建集群。因為redis trib。rb是一個用Ruby實現的Redis集群管理工具,我們需要先安裝Ruby環境

2.1.安裝Ruby

yum-y安裝zlib-ruby-rubygems

2.2安裝Rubygems的Redis依賴項

gem安裝-l redis-3.3.0.gem

3.安裝依賴環境后,我們可以使用script命令

注意:此腳本文件位于解壓縮目錄src中。

執行命令:

./redis三角形。Rb創建--副本0 192.168.10.167:6379 192.168.10.167:3380 192.168.10.167:8381打開16379 Redis端口+1W

以上是潮人地東莞seo博客跟大家分享關于網站優化seo:網絡緩存服務器有怎樣軟件,Redis緩存、持久性、高可用性等問題,希望能對大家有所幫助,若有不足之處,請諒解,我們大家可以一起討論關于網站seo優化排名的技巧,一起學習,以上內容僅供參考。

閱讀全文
本文標題"網站優化seo:網絡緩存服務器有怎樣軟件,Redis緩存、持久性、高可用性":http://www.420113.com/wzyh_23442.html
本文版權歸潮人地seo博客所有,歡迎轉載,但未經作者同意必須在文章頁面給出原文連接,否則保留追究法律責任的權利。
標簽:
標簽列表
合作伙伴
主站蜘蛛池模板: av无码久久久久久不卡网站| 99国产精品无码| 夫妻免费无码V看片| 精品无码成人久久久久久| 成在人线AV无码免费| 无码人妻黑人中文字幕| 国产精品午夜无码av体验区| 毛片免费全部播放无码| 久久伊人中文无码| 成人无码嫩草影院| 69ZXX少妇内射无码| 久久精品中文字幕无码| 精品人体无码一区二区三区| 内射人妻无码色AV天堂| 久久亚洲AV成人无码软件| 亚洲av无码一区二区乱子伦as | 6080YYY午夜理论片中无码| 国产丰满乱子伦无码专区| 亚洲国产综合无码一区二区二三区| 中文字幕无码日韩欧毛| 久久成人无码国产免费播放| 国内精品无码一区二区三区| 亚洲AV无码乱码在线观看性色扶 | 国产精品无码久久综合网| 日木av无码专区亚洲av毛片| 亚洲色中文字幕无码AV| 伊人久久无码中文字幕| 中文字幕精品无码久久久久久3D日动漫| 国产精品无码2021在线观看| 麻豆亚洲AV成人无码久久精品| 6080YYY午夜理论片中无码| 精品无码一区二区三区爱欲| 欧洲精品久久久av无码电影| 97免费人妻无码视频| 免费A级毛片无码无遮挡内射 | 色综合久久久无码中文字幕| 久久无码av亚洲精品色午夜| 亚洲AV无码专区在线观看成人 | 久久精品无码专区免费青青| 人妻少妇伦在线无码专区视频| 无码毛片视频一区二区本码 |