最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

分布式緩存redis使用及說明

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

1 redis單機(單節(jié)點)部署缺點

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

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

(3)故障恢復問題:如果redis單節(jié)點故障中斷,那么會影響應用的使用。

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

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

2.1 解決redis單機部署的缺點

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

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

(3)解決故障恢復問題:搭建redis哨兵,實現(xiàn)健康監(jiān)測和自動恢復

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

2.2 redis的RDB和AOF持久化

1 RDB(redis database backup)

將內(nèi)存中的數(shù)據(jù)都記錄到磁盤中,重啟后,可讀RDB(快照)文件進行數(shù)據(jù)恢復。快照文件位置:默認保存在redis運行命令執(zhí)行的目錄下。

redis客戶端命令:

redis-cli

>save命令:

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

>bgsave命令:

后臺啟動,(fork主進程得到子進程)子進程執(zhí)行RDB,避免主進程受影響。

特殊:如果redis是自己手動停止的,redis停機時會執(zhí)行一次RDB

2 RDB的fork原理

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

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

fork操作的范圍

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

思考:

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

RDB的缺點

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

AOF持久化

append only file 追加文件

1 介紹

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

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

(1)手動

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

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

redis也會在觸發(fā)閾值時自動重寫AOF文件,可在redis.conf文件中配置

RDB和AOF持久化的比較

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

宕機回復速度要求高的話:推薦RDB持久化

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

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

另外,主節(jié)點master會向兩臺slave/replica從節(jié)點中同步數(shù)據(jù)。可以解決高并發(fā)讀(因為有多個slave節(jié)點)和高可用性(主從集群的哨兵模式)的問題,但是redis主從集群解決不了高并發(fā)寫(因為只有一個master)和存儲海量數(shù)據(jù)(整體的存儲數(shù)據(jù)量取決于一個redis節(jié)點的master的容量,每個節(jié)點數(shù)據(jù)保持和master節(jié)點數(shù)據(jù)一致)的問題。

搭建主從集群

1 在3臺機器上分別安裝3個redis

編輯每個redis的redis.conf文件

# redis實例的聲明ip
redis-announce-ip 所在主機的ip

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

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

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

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

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

slaveof 主節(jié)點的ip  主節(jié)點的端口號

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

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

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

slaveof 主節(jié)點的ip  主節(jié)點的端口號

在某一臺redis中查看節(jié)點信息:

info replication

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

建立連接時的第一次同步 是全量同步

(1)2個重要概念

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

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

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

連接redis

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

總結(jié)

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

相關(guān)文章

  • 一文搞懂Redis中String數(shù)據(jù)類型

    一文搞懂Redis中String數(shù)據(jù)類型

    string 是 redis 最基本的類型,你可以理解成與 Memcached 一模一樣的類型,一個 key 對應一個 value。今天通過本文給大家介紹下Redis中String數(shù)據(jù)類型,感興趣的朋友一起看看吧
    2022-04-04
  • Redis分布式鎖存在的問題(推薦)

    Redis分布式鎖存在的問題(推薦)

    有很多基于Redis實現(xiàn)的分布式鎖方案或者庫,但是有些庫并沒有解決分布式環(huán)境下的一些問題陷阱,這篇文章主要介紹了Redis分布式鎖存在的問題,需要的朋友可以參考下
    2022-12-12
  • Docker快速部署Redis完整步驟流程(含持久化配置)

    Docker快速部署Redis完整步驟流程(含持久化配置)

    Redis集群是一種分布式數(shù)據(jù)庫解決方案,旨在提供高性能、高可用性、可擴展性的數(shù)據(jù)存儲服務,這篇文章主要介紹了Docker快速部署Redis(含持久化配置)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-11-11
  • Redis配合SSDB實現(xiàn)持久化存儲代碼示例

    Redis配合SSDB實現(xiàn)持久化存儲代碼示例

    這篇文章主要介紹了Redis配合SSDB實現(xiàn)持久化存儲代碼示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-11-11
  • Redis遍歷所有key的兩個命令(KEYS 和 SCAN)

    Redis遍歷所有key的兩個命令(KEYS 和 SCAN)

    這篇文章主要介紹了Redis遍歷所有key的兩個命令(KEYS 和 SCAN),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • redis發(fā)布和訂閱_動力節(jié)點Java學院整理

    redis發(fā)布和訂閱_動力節(jié)點Java學院整理

    這篇文章主要為大家詳細介紹了redis發(fā)布和訂閱的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • redis-copy使用6379端口無法連接到Redis服務器的問題

    redis-copy使用6379端口無法連接到Redis服務器的問題

    這篇文章主要介紹了redis-copy使用6379端口無法連接到Redis服務器的問題的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • 淺談redis五大數(shù)據(jù)結(jié)構(gòu)和使用場景

    淺談redis五大數(shù)據(jù)結(jié)構(gòu)和使用場景

    這篇文章主要介紹了淺談redis五大數(shù)據(jù)結(jié)構(gòu)和使用場景,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Redis如何實現(xiàn)延遲隊列

    Redis如何實現(xiàn)延遲隊列

    這篇文章主要介紹了Redis如何實現(xiàn)延遲隊列問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Redis Lua腳本實現(xiàn)分布式鎖方式

    Redis Lua腳本實現(xiàn)分布式鎖方式

    文章主要介紹了在分布式系統(tǒng)中使用Lua腳本實現(xiàn)Redis分布式鎖的方法,包括可重入鎖的實現(xiàn)和注意事項,以及紅鎖算法在Redis集群狀態(tài)下的潛在問題
    2026-05-05

最新評論

民权县| 玉林市| 鄂州市| 奈曼旗| 山东省| 浦江县| 渭南市| 蒙山县| 永昌县| 杭锦旗| 屯门区| 左云县| 乌拉特前旗| 山丹县| 齐河县| 中牟县| 资阳市| 清镇市| 册亨县| 绍兴市| 同江市| 龙江县| 宜黄县| 洪泽县| 甘南县| 南涧| 南开区| 喜德县| 丹东市| 都安| 金昌市| 汤原县| 梅州市| 郑州市| 黄大仙区| 繁昌县| 潞城市| 九寨沟县| 乐亭县| 黄平县| 彭阳县|