redis的高可用(主從復制和哨兵模式)

redis的高可用(主從復制和哨兵模式

redis的性能管理:redis的數據緩存在內存當中

INFO memory:查看redis內存使用情況

used_memory:1800800:redis中數據占用的內存

used_memory_rss:5783552:redis向操作系統申請的內存

used_memory_peak:1800800:redis使用內存的峰值

系統巡檢:硬件巡檢,數據庫,nginx,redis,docker,k8s

redis-cli info memory | grep ratio:過濾內存碎片

內存碎片率:used_memory_rss/used_memory

系統已經分配給了redis,但是redis未能夠有效利用的內存

allocator_frag ratio:1.19

分配器碎片的比例,redis主進程調度時產生的內存,比例越小越好,值越高,內存的浪費越多

allocator_rss_ratio:7.15

分配器占用物理內存的比例,告訴你主進程調度執行時占用了多少物理內存

rss_overhead_ratio:0.31

RSS是向系統申請的內存空間,redis占用物理空間額外的開銷比例,比例越低越好,redis實際占用的物理內存和向系統申請的內存越接近,額外的開銷就越低

mem_fragmentation_ratio:3.33

內存碎片的比例,越低越好,內存的使用率越高

碎片可以自動清理(手動清理redis-cli memory purge和自動清理在配置文件redis最后一行添加activedefrag yes)

設置redis的最大內存閥值:(在/etc/redis/6379.conf中568行maxmemory 1gb)

一旦到達閥值,自動清理碎片,開啟key的回收機制

key回收的策略:(要先設置上面的閥值

配置文件redis/5379.conf,598行增加

maxmemory-policy volatile-lru:使用redis內置的LRU算法,把已經設置了過期時間的鍵值對中淘汰數據,移除最近最少使用鍵值對(針對已經設置了過期時間的鍵值對)

maxmemory-policy volatile-ttl:已經設置了過期時間的鍵值對,從當中挑選一個即將過期的鍵值對

maxmemory-policy volatile-random:從已經設置了過期時間的鍵值對當中,挑選數據隨機淘汰鍵值對(對設置了過期時間的鍵值對進行隨機移除)

allkeys-lru:LRU算法當中,對所有的鍵值對進行淘汰,移除最少使用的鍵值對(針對所有的鍵值對)(慎用)

allkeys-random:從所有鍵值對當中任意選擇數據進行淘汰(慎用或別用)

maxmemory-policy noeviction:禁止鍵值對回收(不擅長任何鍵值對,直到redis把內存塞滿,寫不了,報錯為止)

在工作當中,一定要給redis占用內存設置閥值

面試題:

redis占用的內存的效率問題如何解決?

1、日常巡檢當中,對redis的占用情況做監控

2、設置redis占用系統內存的閥值(在/etc/redis/6379.conf中568行maxmemory 1gb),避免占用系統全部內存

3、內存碎片清理(手動清理redis-cli memory purge和自動清理在配置文件redis最后一行添加activedefrag yes

4、設置合適的key回收機制

maxmemory-policy noeviction:禁止鍵值對回收(不擅長任何鍵值對,直到redis把內存塞滿,寫不了,報錯為止)

maxmemory-policy volatile-lru:使用redis內置的LRU算法,把已經設置了過期時間的鍵值對中淘汰數據,移除最近最少使用鍵值對(針對已經設置了過期時間的鍵值對)

redis雪崩(緩存雪崩):

大量的應用請求無法在redis緩存當中處理,請求會全部發送到后臺數據庫,數據庫并發能力本身就差。一旦高并發,數據庫會很快崩潰

redis集群大面積故障

redis緩存中,大量數據同時過期,大量的請求無法得到處理

redis實例宕機

解決方案:

事前:采用高可用架構,防止整個緩存故障。主從復制和哨兵模式 redis集群

事中:在國內用的比較多哥方式:HYSTRIX,熔斷,降級,限流三個手段來降低雪崩發生之后的損失。

數據庫不死即可,慢可以,但是不能沒有響應

事后:redis備份,快速緩存預熱

redis的緩存擊穿:

緩存擊穿主要是熱點數據緩存過期,或者被刪除,多個請求并發訪問數據,請求也是轉發到數據庫了,導致數據庫的性能快速下降

經常被請求的緩存數據,最好設置為永不過期

redis的緩存穿透:

緩存中沒有數據,數據庫也沒有對應數據,但是有用戶一直在發起這個都沒有的請求,而且請求的數據格式很大

一般這種情況就是黑客利用漏洞進行攻擊,壓垮應用數據庫

redis的集群:

1、持久化

2、高可用 ?主從復制 ?哨兵模式 ?集群

主從復制:主從復制是redis實現高可用的基礎,哨兵模式和集群都是在主從復制的基礎之上實現高可用

??????????主從復制實現數據的多機備份,以及讀寫分離(主服務器負責寫,從服務器只能讀)

??????????缺陷:故障無法自動恢復,需要人工干預,無法實現寫操作的負載均衡

主從復制的工作原理:

  1. 主節點(master)從節點(slave)組成,數據復制是單向的,只能從主節點到從節點

主從復制的實驗:

(主)打開配置文件:vim /etc/redis/6379.conf

70行 IP地址改為0.0.0.0,讓所有的主機都可以使用

137行 daemonize yes打開

700行 appendonly no打開變成yes

重啟配置文件:/etc/init.d/redis_6379 restart

(從)打開配置文件:vim /etc/redis/6379.conf

70行 IP地址改為0.0.0.0,讓所有的主機都可以使用

137行 daemonize yes打開

288行添加一行replicaof 192.168.233.11 6379

700行 appendonly no打開變成yes

哨兵模式:先有主從再有哨兵

在主從復制的基礎之上,實現主節點故障的自動切換

哨兵模式的原理:

哨兵:分布式系統,用于在主從結構之間,對每臺redis的服務進行監控

主節點出現故障時,從節點通過投票的方式選擇一個新的master

哨兵模式也需要至少三個節點

哨兵模式的結構:

哨兵節點:監控,不存儲數據

數據節點:主節點和從節點,都是數據節點

主:192.168.233.11

從:192.168.233.12

從:192.168.233.13

哨兵模式的實驗:

(主)cd /opt/

cd redis-5.0.7/

vim sentinel.conf

17行注釋取消掉protected-mode no

26行daemonize no改成yes

36行logfile "/var/log/sentinel.log"

65行dir "/var/lib/redis/6379"

84行sentinel monitor mymaster 192.168.233.11 6379 2

啟動配置文件redis-sentinel sentinel.conf &

redis-cli -p 26379 info Sentinel

ps -elf | grep redis

(從)cd /opt/

cd redis-5.0.7/

vim sentinel.conf

17行注釋掉protected-mode no

26行 daemonize no改為yes

36行logfile "/var/log/sentinel.log"

65行dir "/var/lib/redis/6379"

84行sentinel monitor mymaster 192.168.233.11 6379 2

啟動配置文件redis-sentinel sentinel.conf &

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160258.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160258.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160258.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Halcon Solution Guide I basics(3): Region Of Interest(有興趣區域/找重點)

文章目錄 文章專欄前言文章解讀前言創建ROI案例1:直接截取ROI手動截取ROI 總結ROI套路獲取窗口句柄截取ROI區域獲取有效區域 Stop組合 文章專欄 Halcon開發 Halcon學習 練習項目gitee倉庫 CSDN Major 博主Halcon文章推薦 前言 今天來看第三章內容,既然是…

QTableWidget——編輯單元格

文章目錄 前言熟悉QTableWiget,通過實現單元格的合并、拆分、通過編輯界面實現表格內容及屬性的配置、實現表格的粘貼復制功能熟悉QTableWiget的屬性 一、[單元格的合并、拆分](https://blog.csdn.net/qq_15672897/article/details/134476530?spm1001.2014.3001.55…

Docker實踐筆記7:構建MySQL 8鏡像

使用Docker構建MySQL 8鏡像并運行容器 本教程將指導您使用Dockerfile構建和運行一個MySQL 8容器。讓我們開始吧! 步驟1:創建Dockerfile 在您的項目根目錄下創建一個名為Dockerfile的文件。以下是Dockerfile的示例內容: # 基于最新的MySQL…

docker、elasticsearch8、springboot3集成備忘

目錄 一、背景 二、安裝docker 三、下載安裝elasticsearch 四、下載安裝elasticsearch-head 五、springboot集成elasticsearch 一、背景 前兩年研究了一段時間elasticsearch,當時也是網上找了很多資料,最后解決個各種問題可以在springboot上運行了…

vue-使用input封裝上傳文件圖片全局組件

前言 實際開發過程中,我們經常遇見需要上傳文件圖片功能,可以封裝一個全局組件來調用 原理很簡單,首先獲取到文件或圖片對象,調用自己公司文檔服務器的接口,上傳文件圖片 為了方便用戶體驗,我們應該在上傳…

Godot

前言 為什么要研究開源引擎 主要原因有: 可以享受“信創”政策的紅利,非常有利于承接政府項目。中美脫鉤背景下,國家提出了“信創”政策。這個政策的核心就是,核心技術上自主可控。涉及的產業包括:芯片、操作系統、數據…

【Django使用】md文檔10大模塊第5期:Django數據庫增刪改查和Django視圖

Django的主要目的是簡便、快速的開發數據庫驅動的網站。它強調代碼復用,多個組件可以很方便的以"插件"形式服務于整個框架,Django有許多功能強大的第三方插件,你甚至可以很方便的開發出自己的工具包。這使得Django具有很強的可擴展…

Vue項目 配置項設置

一、項目運行時瀏覽器自動打開 找到package.json文件 找到"sctipts"配置項 在"serve"配置項最后加上--open "scripts": {"serve": "vue-cli-service serve --open","build": "vue-cli-service build&quo…

Redis面試內容,Redis過期策略,Redis持久化方式,緩存穿透、緩存擊穿和緩存雪崩,以及解決辦法

文章目錄 一、redis什么是RedisRedis使用場景1、緩存2、數據共享[分布式](https://so.csdn.net/so/search?q分布式&spm1001.2101.3001.7020)3、分布式鎖4、全局ID5、計數器6、限流7、位統計 Redis有5中數據類型: SSHLZRedis中一個key的值每天12點過期&#xff…

Cookie、Session、CBV加裝飾器的三種方法

【0】cookie、session和Token的發展史 【1】Cookie的形式 存儲形式:k:v鍵值對存儲位置:客戶端缺點:不安全,信息可能會泄露 【2】session的形式 標識符,表示我是當前用戶加密出來的數據對敏感信息進行加密…

排序算法-----快速排序(非遞歸實現)

目錄 前言 快速排序 基本思路 非遞歸代碼實現 前言 很久沒跟新數據結構與算法這一欄了,因為數據結構與算法基本上都發布完了,哈哈,那今天我就把前面排序算法那一塊的快速排序完善一下,前面只發布了快速排序遞歸算法,…

單鏈表相關面試題--3.鏈表的中間節點

3.鏈表的中間節點 876. 鏈表的中間結點 - 力扣(LeetCode) /* 解題思路: 通過快慢指針找到中間節點,快指針每次走兩步,慢指針每次走一步,當快指針走到結尾的時候,慢指針正好走到中間位置 */ typ…

HTTPS協議的加密流程

目錄 一,HTTPS是什么 二,兩種加密方式 三,HTTPS的加密過程 3.1 引入對稱加密 3.2 引入非對稱加密 3.3 引入證書 一,HTTPS是什么 HTTPS也是一個應用層協議,它是在HTTP協議的基礎上引入了一個加密層。因為HTTP協議…

每天一道算法題(十)——獲取和為k的子數組

文章目錄 1、問題2、示例3、解決方法(1)方法1——雙指針 總結 1、問題 給你一個整數數組 nums 和一個整數 k ,請你統計并返回 該數組中和為 k 的子數組的個數 。 子數組是數組中元素的連續非空序列。 2、示例 示例 1: 輸入&#x…

多分類自定義采樣比例

多分類自定義采樣比例 import torch from torch.utils.data import DataLoader, Dataset, WeightedRandomSampler from torchvision import transforms from torchvision.datasets import ImageFolder# 假設你有一個自定義的數據集類 class CustomDataset(Dataset):def __init…

51單片機按鍵控制LED燈亮滅的N個玩法

51單片機按鍵控制LED燈亮滅的N個玩法 1.概述 這篇文章介紹按鍵的使用,以及通過控制LED燈的小實驗,發現按鍵中存在的問題,然后思考并解決這些問題。達到熟練使用按鍵控制元器件。 2.搭建硬件環境 1.硬件準備 名稱型號數量單片機STC12C205…

2023全球數字貿易創新大賽9-12

目錄 回答評委提問:先說痛點-再說怎樣解決 食品安全溯源是否全流程 星火? 鏈網

Sleuth

Sleuth 一 引言 隨著服務的越來越多,對調?鏈的分析會越來越復雜。它們之間的調?關系也許如下圖: 問題: 1:微服務之間的調?錯綜復雜,?戶發送的請求經歷那些服務,調?鏈不清楚,沒有? 個?…

【SpringCloud微服務全家桶學習筆記-Hystrix(服務降級,熔斷,接近實時的監控,服務限流等)】

服務雪崩 (微服務面臨的問題) 多個微服務之間調用的時候,假設微服務A調用微服務B和微服務C,微服務B和微服務C又調用其它的微服務,這就是所謂的“扇出”。如果扇出的鏈路上某個微服務的調用響應時間過長或者不可用&…

HarmonyOS開發(五):常用基礎組件

1、組件介紹 組件(Component),是界面搭建及顯示的最小單元。 組件根據功能可以分為五大類:基礎組件、容器組件、媒體組件、繪制組件、畫布組件 2、基礎組件 基礎組件是視圖層的基本組成單元,它包含:Text、Image、T…