欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

分布式緩存redis使用及說明

 更新時(shí)間:2025年07月22日 08:51:14   作者:躲在沒風(fēng)的地方  
Redis單機(jī)存在數(shù)據(jù)丟失、并發(fā)低、故障恢復(fù)差和存儲(chǔ)容量有限問題,集群部署通過主從、哨兵和分片解決,結(jié)合RDB/AOF持久化提升數(shù)據(jù)安全與恢復(fù)能力,實(shí)現(xiàn)高可用和擴(kuò)展性

1 redis單機(jī)(單節(jié)點(diǎn))部署缺點(diǎn)

(1)數(shù)據(jù)丟失問題:redis是內(nèi)存存儲(chǔ),服務(wù)重啟可能會(huì)丟失數(shù)據(jù)

(2)并發(fā)能力問題:redis單節(jié)點(diǎn)(單機(jī))部署在并發(fā)量不大的話,也是可以滿足要求的,并發(fā)量最多幾萬,無法承受更高的并發(fā)。

(3)故障恢復(fù)問題:如果redis單節(jié)點(diǎn)故障中斷,那么會(huì)影響應(yīng)用的使用。

(4)存儲(chǔ)能力問題:內(nèi)存存儲(chǔ)無法和磁盤存儲(chǔ)做比較,不能滿足海量數(shù)據(jù)的要求。

2 redis(是單線程的)集群(分布式緩存redis)

2.1 解決redis單機(jī)部署的缺點(diǎn)

(1)解決數(shù)據(jù)丟失問題:redis的持久化RDB和AOF

(2)解決并發(fā)能力問題:搭建redis主從集群,實(shí)現(xiàn)讀寫分離

(3)解決故障恢復(fù)問題:搭建redis哨兵,實(shí)現(xiàn)健康監(jiān)測(cè)和自動(dòng)恢復(fù)

(4)存儲(chǔ)能力問題:搭建redis分片集群

2.2 redis的RDB和AOF持久化

1 RDB(redis database backup)

將內(nèi)存中的數(shù)據(jù)都記錄到磁盤中,重啟后,可讀RDB(快照)文件進(jìn)行數(shù)據(jù)恢復(fù)??煺瘴募恢茫耗J(rèn)保存在redis運(yùn)行命令執(zhí)行的目錄下。

redis客戶端命令:

redis-cli

>save命令:

執(zhí)行一次RDB操作,主進(jìn)程來執(zhí)行RDB,會(huì)阻塞進(jìn)程。

>bgsave命令:

后臺(tái)啟動(dòng),(fork主進(jìn)程得到子進(jìn)程)子進(jìn)程執(zhí)行RDB,避免主進(jìn)程受影響。

特殊:如果redis是自己手動(dòng)停止的,redis停機(jī)時(shí)會(huì)執(zhí)行一次RDB

2 RDB的fork原理

Bgsave開始時(shí)會(huì)fork主進(jìn)程得到子進(jìn)程,子進(jìn)程共享主進(jìn)程的內(nèi)存數(shù)據(jù),完成fork后讀取內(nèi)存數(shù)據(jù)并寫入RDB文件。主進(jìn)程執(zhí)行fork時(shí),也是阻塞的,只能用來執(zhí)行fork。

fork就是復(fù)制頁表(linux的進(jìn)程和物理內(nèi)存(內(nèi)存條)之間映射的虛擬內(nèi)存),Linux中進(jìn)程不能直接操作物理內(nèi)存(內(nèi)存條) 需要在中間借助一個(gè)虛擬內(nèi)存來映射操作物理內(nèi)存。

fork操作的范圍

不包括:子進(jìn)程寫新的RDB文件(替換舊的RDB文件)的過程,fork操作只會(huì)復(fù)制頁表(就是進(jìn)程和物理內(nèi)存的映射關(guān)系表) 生成1個(gè)子進(jìn)程。

思考:

  • 如果在fork完一個(gè)子進(jìn)程后,子進(jìn)程生成RDB文件過程中,有請(qǐng)求來修改(寫)操作,那么會(huì)操作哪一部分?
  • 當(dāng)主進(jìn)程執(zhí)行讀操作時(shí),訪問共享內(nèi)存。
  • 當(dāng)主進(jìn)程執(zhí)行寫操作時(shí),則會(huì)拷貝一份數(shù)據(jù),執(zhí)行寫操作,(只能寫這個(gè)拷貝的副本數(shù)據(jù))。后續(xù)的讀請(qǐng)求就會(huì)訪問這個(gè)副本數(shù)據(jù)。

RDB的缺點(diǎn)

RDB執(zhí)行時(shí)間(間隔)長,2次RDB之間寫入數(shù)據(jù)有丟失風(fēng)險(xiǎn)。 如果執(zhí)行間隔短的話(2-3秒一次),那么太耗性能。

AOF持久化

append only file 追加文件

1 介紹

為了彌補(bǔ)RDB的缺點(diǎn),redis處理的每一個(gè)寫命令都會(huì)記錄在AOF文件中(RDB是每次都重新讀全部?jī)?nèi)存數(shù)據(jù)),可以看過是命令日志文件。

2 AOF文件體積大的處理方法(將AOF文件中的命令進(jìn)行重寫,相當(dāng)于將重復(fù)命令合成一個(gè)(多個(gè)set同一個(gè)key 可合為1個(gè)最后的key操作命令))

(1)手動(dòng)

redis-cli連接redis客戶端,執(zhí)行bgrewirterof命令,用最少的命令達(dá)到相同的效果。

(2)自動(dòng)(在配置文件中添加)

redis也會(huì)在觸發(fā)閾值時(shí)自動(dòng)重寫AOF文件,可在redis.conf文件中配置

RDB和AOF持久化的比較

對(duì)數(shù)據(jù)安全性比較高并且數(shù)據(jù)完整的話:推薦AOF持久化

宕機(jī)回復(fù)速度要求高的話:推薦RDB持久化

2.3 redis主從集群,實(shí)現(xiàn)讀寫分離(解決并發(fā)能力問題)

由于redis大多都是讀多寫少,所以不做成傳統(tǒng)的集群。單節(jié)點(diǎn)的redis的并發(fā)能力是有上限的,要進(jìn)一步提高redis的并發(fā)能力,需要搭建主從集群,實(shí)現(xiàn)讀寫分離。至少需要3個(gè)節(jié)點(diǎn),一主兩從,讀操作找從節(jié)點(diǎn)進(jìn)行讀取,寫操作找主節(jié)點(diǎn)進(jìn)行寫操作。

另外,主節(jié)點(diǎn)master會(huì)向兩臺(tái)slave/replica從節(jié)點(diǎn)中同步數(shù)據(jù)??梢越鉀Q高并發(fā)讀(因?yàn)橛卸鄠€(gè)slave節(jié)點(diǎn))和高可用性(主從集群的哨兵模式)的問題,但是redis主從集群解決不了高并發(fā)寫(因?yàn)橹挥幸粋€(gè)master)和存儲(chǔ)海量數(shù)據(jù)(整體的存儲(chǔ)數(shù)據(jù)量取決于一個(gè)redis節(jié)點(diǎn)的master的容量,每個(gè)節(jié)點(diǎn)數(shù)據(jù)保持和master節(jié)點(diǎn)數(shù)據(jù)一致)的問題。

搭建主從集群

1 在3臺(tái)機(jī)器上分別安裝3個(gè)redis

編輯每個(gè)redis的redis.conf文件

# redis實(shí)例的聲明ip
redis-announce-ip 所在主機(jī)的ip

2 配置主從關(guān)系

前提:3個(gè)redis實(shí)例還沒有關(guān)系

(1)臨時(shí)模式(使用命令配置主從,但重啟redis后失效)

redis5.0之前可使用slaveof命令,redis5.0之后新增replicaof命令(和slaveof命令效果一致)

使用redis-cli 客戶端連接到redis服務(wù),執(zhí)行slaveof命令

slaveof 主節(jié)點(diǎn)的ip  主節(jié)點(diǎn)的端口號(hào)

效果:在哪臺(tái)redis客戶端命令/配置文件中 添加上slaveof,那么這臺(tái)redis就會(huì)成為指定的主節(jié)點(diǎn)的從節(jié)點(diǎn)。

(2)永久模式–修改配置文件

在redis.conf文件中添加一行配置:

slaveof 主節(jié)點(diǎn)的ip  主節(jié)點(diǎn)的端口號(hào)

在某一臺(tái)redis中查看節(jié)點(diǎn)信息:

info replication

主從數(shù)據(jù)同步原理

建立連接時(shí)的第一次同步 是全量同步

(1)2個(gè)重要概念

  • Replication id:簡(jiǎn)稱replid,是數(shù)據(jù)集的標(biāo)記,id一致則說明是同一數(shù)據(jù)集。每一個(gè)master都有唯一的replid,slave會(huì)繼承master節(jié)點(diǎn)的replid。
  • offset:偏移量,隨著記錄在repl_baklog中的數(shù)據(jù)增多而逐漸增大。

master節(jié)點(diǎn)判斷某個(gè)從節(jié)點(diǎn)是否第一次同步:

每個(gè)redis節(jié)點(diǎn)都有自己replication id,每個(gè)redis從節(jié)點(diǎn)都有自己的replication id和相對(duì)于主節(jié)點(diǎn)的偏移量offset。

連接redis

bin/redis-cli
# 在bin目錄下 連接
redis-cli

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • windows下使用redis requirepass認(rèn)證不起作用的解決方法

    windows下使用redis requirepass認(rèn)證不起作用的解決方法

    今天小編就為大家分享一篇windows下使用redis requirepass認(rèn)證不起作用的解決方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • Redis連接失敗:客戶端IP不在白名單中的問題分析與解決方案

    Redis連接失?。嚎蛻舳薎P不在白名單中的問題分析與解決方案

    在現(xiàn)代分布式系統(tǒng)中,Redis作為一種高性能的內(nèi)存數(shù)據(jù)庫,被廣泛應(yīng)用于緩存、消息隊(duì)列、會(huì)話存儲(chǔ)等場(chǎng)景,然而,在實(shí)際使用過程中,我們可能會(huì)遇到各種連接問題,其中“客戶端IP不在白名單中”是一個(gè)常見的錯(cuò)誤,本文將從錯(cuò)誤分析、原因排查、解決方案等詳細(xì)探討如何解決這一問題
    2025-01-01
  • Redis實(shí)現(xiàn)布隆過濾器的方法及原理

    Redis實(shí)現(xiàn)布隆過濾器的方法及原理

    布隆過濾器優(yōu)點(diǎn)是空間效率和查詢時(shí)間都比一般的算法要好的多,缺點(diǎn)是有一定的誤識(shí)別率和刪除困難。本文將介紹布隆過濾器的原理以及Redis如何實(shí)現(xiàn)布隆過濾器,感興趣的朋友跟隨小編一起看看吧
    2019-12-12
  • Redis分析慢查詢操作的實(shí)例教程

    Redis分析慢查詢操作的實(shí)例教程

    這篇文章主要給大家介紹了關(guān)于Redis如何分析慢查詢操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-09-09
  • Redis讀寫分離搭建的完整步驟

    Redis讀寫分離搭建的完整步驟

    為滿足讀多寫少的業(yè)務(wù)場(chǎng)景.最大化節(jié)約用戶成本.云數(shù)據(jù)庫Redis版推出了讀寫分離規(guī)格,為用戶提供透明、高可用、高性能、高靈活的讀寫分離服務(wù),這篇文章主要給大家介紹了關(guān)于Redis讀寫分離搭建的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • Redis的4種緩存模式分享

    Redis的4種緩存模式分享

    這篇文章主要介紹了Redis的4種緩存模式分享,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-07-07
  • redis實(shí)現(xiàn)分布式session的解決方案

    redis實(shí)現(xiàn)分布式session的解決方案

    session存放在服務(wù)器,關(guān)閉瀏覽器不會(huì)失效,本文主要介紹了redis實(shí)現(xiàn)分布式session的解決方案,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Redis內(nèi)部數(shù)據(jù)結(jié)構(gòu)Dict的實(shí)現(xiàn)方法

    Redis內(nèi)部數(shù)據(jù)結(jié)構(gòu)Dict的實(shí)現(xiàn)方法

    這篇文章主要介紹了Redis內(nèi)部數(shù)據(jù)結(jié)構(gòu)Dict的實(shí)現(xiàn)方法,本篇文章所述的dict在Redis中最主要的作用就是用于維護(hù)Redis數(shù)據(jù)庫中所有Key、value映射的數(shù)據(jù)結(jié)構(gòu),需要的朋友可以參考下
    2022-05-05
  • Redis如何解決熱key問題

    Redis如何解決熱key問題

    這篇文章主要介紹了Redis如何解決熱key問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-07-07
  • Redis的持久化方案詳解

    Redis的持久化方案詳解

    在本篇文章里小編給大家整理的是關(guān)于Redis的持久化方案詳解,有興趣的朋友們可以參考下。
    2020-03-03

最新評(píng)論