一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

深入探究Redis存儲原理

jf_78858299 ? 來源:老李說架構(gòu)之道 ? 作者:夢海飛翔 ? 2023-02-15 15:52 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Redis是用C語言開發(fā)的一個開源的高性能鍵值對(key-value)內(nèi)存數(shù)據(jù)庫。

Redis數(shù)據(jù)存儲原理

** 存儲結(jié)構(gòu)如圖:**

圖片

redisDB、dict、dictht、dictEntry、RedisObject的存儲結(jié)構(gòu)關(guān)系如圖:

圖片

占的字節(jié)數(shù):

dictEntry :16字節(jié)、RedisObject:12字節(jié)、sds:8字節(jié) + 字符串長度

我們現(xiàn)在思考,如果一個10字節(jié)的key,需要多少存儲空間呢?

16+12+8+10+1=47*2(exprires也需要同樣的空間所以乘以倍數(shù))

結(jié)論:在key設(shè)置的時候盡量的少的字節(jié),避免空間的浪費;

內(nèi)存清理方式:

  • 定期清理

    隨機取樣的方式,如果清理的比例大于25%,繼續(xù)。如下圖:

圖片

  • 惰性刪除:被動刪除策略,訪問時判斷;

  • LFU

    volatile-lfu:對有過期時間的key采用LFU淘汰算法;
    allkeys-lfu:對全部key采用LFU淘汰算法;

  • LRU

    volatile-lru:從設(shè)置了過期時間的數(shù)據(jù)集中,選擇最近最久未使用的數(shù)據(jù)釋放;
    allkeys-lru:從數(shù)據(jù)集中選擇最近最久未使用的數(shù)據(jù)釋放;

Redis數(shù)據(jù)固化方式

  • RDB快照方式

    手動方式:
    
                  save:阻塞當前Redis服務(wù)器,直到RDB過程完成為止;
    
          自動方式:
    
                   bgsave:fork子進程,持久化過程由子進程負責,完成后自動結(jié)束;
    
          配置項:save m n,m秒存在n次寫入,觸發(fā)bgsave  ;
    

    優(yōu)點:

    對Redis性能影響低,二進制壓縮文件體積小,數(shù)據(jù)恢復(fù)塊;
    

    ** 缺點:**

    有數(shù)據(jù)丟失可能,備份文件版本兼容問題;
    

    ** 過程如圖:**

圖片* AOF快照方式

append only file,日志形式記錄寫入指令,實時持久化;**命令寫入過程:**

圖片

配置 含義 效率 數(shù)據(jù)安全
appendfsync=always 每次同步 全最高,最多丟失一個寫入的數(shù)據(jù)
appendfsync=everysec 每秒同步 安全最折中,最多丟失1S的數(shù)據(jù)
appendfsync=no 關(guān) 閉 安全最低,最多上一次保存AOF文件到當前時刻的全部數(shù)據(jù)
  • AOF文件重寫
    • fork子進程不影響父進程處理請求
    • 子進程雙寫,確保數(shù)據(jù)不丟失
    • 手動觸發(fā):調(diào)用bgrewriteaof命令
    • 被動觸發(fā):
      • auto-aof-rewrite-min-size
      • auto-aof-rewrite-percentage
      • aof_current_size
      • aof_base_size

過程如圖:

圖片

Redis重啟恢復(fù)過程:

圖片

注意:重啟的過程中需要注意:如果開啟RDB模型,未開啟AOF模式,而在重啟的時候開啟AOF模式,這是RDB****的數(shù)據(jù)就會覆蓋掉。

Redis可靠性保障

  • 主從模式
    啟動時,全量同步Slave。增量同步,運行ID(Master啟動時生成),同步給Slave,通過復(fù)制偏移量確定具體同步位置;
    

具體同步過程如下圖所示:

圖片

  • 哨兵模式
    不斷地檢查Master和Slave是否運作正常,發(fā)現(xiàn)故障通知管理員和客戶端,自動主從切換,更新配置信息,客戶端應(yīng)用初始化時連接Sentinel獲取節(jié)點信息;
    

哨兵模式架構(gòu):

圖片

  • 集群模式

    無需Sentinel哨兵,支持水平擴容,自動遷移。

圖片

缺點:

不支持批量操作,客戶端路由,兩次交互,存在性能問題,如圖:

圖片

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141628
  • 數(shù)據(jù)存儲
    +關(guān)注

    關(guān)注

    5

    文章

    997

    瀏覽量

    51732
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3926

    瀏覽量

    66187
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    如何使用Rust連接Redis

    Redis是一款快速、開源、鍵值存儲數(shù)據(jù)庫,被廣泛應(yīng)用于緩存、發(fā)布/訂閱系統(tǒng)、定時任務(wù)等場景中。Rust提供了很多Redis的客戶端庫,本教程將會介紹如何使用Rust連接Redis,以
    的頭像 發(fā)表于 09-19 16:22 ?2934次閱讀

    Redis Stream應(yīng)用案例

    ,還有一個很重要的能力是跨平臺,甚至是作為一個嵌入式的存儲系統(tǒng)跑在基于ARM的平臺上,比如作者之前就宣稱,Redis成功的跑在了“樹莓派”上。試想一下,在IoT時代,會有無數(shù)隨時隨地可以接入互聯(lián)網(wǎng)
    發(fā)表于 06-26 17:15

    深入探究Linux的設(shè)備樹

    新版本linux設(shè)備樹講解?。pt- 深入探究Linux的設(shè)備樹_2017.8.14.pdf
    發(fā)表于 07-03 08:03

    深入探究Linux的設(shè)備樹

    新版本linux設(shè)備樹講解??!ppt- 深入探究Linux的設(shè)備樹_2017.8.14.pdf
    發(fā)表于 07-09 00:15

    redis概述

    REmote DIctionary Server(Redis)是一個基于key-value鍵值對的持久化數(shù)據(jù)庫存儲系統(tǒng)。redis和大名鼎鼎的Memcached緩存服務(wù)軟件很像,但是redis
    發(fā)表于 07-17 07:38

    如何使得redis中的數(shù)據(jù)不再有

    ,原因是redis的持久化功能導(dǎo)致的,所謂的持久化就是redis在系統(tǒng)關(guān)閉的時候把數(shù)據(jù)存儲到硬盤中,在下一次啟動的時候,在從硬盤恢復(fù)到redis中,
    發(fā)表于 11-05 08:50

    電子狗工作原理深入探究

    電子狗工作原理深入探究,感興趣的小伙伴們可以看看。
    發(fā)表于 07-28 09:32 ?17次下載

    簡要分析Redis的特性

    的、鍵值存儲數(shù)據(jù)庫。它也被稱為作為鍵值存儲的字典服務(wù)器,這些鍵值不僅可以是字符串,還可以是hashes(哈希類型)、sets(集合)、lists(列表) 和sorted sets(有序集合)。 Redis
    發(fā)表于 10-11 15:21 ?0次下載
    簡要分析<b class='flag-5'>Redis</b>的特性

    通過講述Redis的數(shù)據(jù)結(jié)構(gòu)和主要命令對Redis的基本能力進行直觀介紹

    本文將從Redis的基本特性入手,通過講述Redis的數(shù)據(jù)結(jié)構(gòu)和主要命令對Redis的基本能力進行直觀介紹。之后在性能調(diào)優(yōu)等方面進行更深入的介紹和指導(dǎo)。
    的頭像 發(fā)表于 01-25 15:41 ?4175次閱讀

    Redis為什么這么快!深入了解Redis的內(nèi)存模型!

    Redis是目前最火爆的內(nèi)存數(shù)據(jù)庫之一,通過在內(nèi)存中讀寫數(shù)據(jù),大大提高了讀寫速度,可以說Redis是實現(xiàn)網(wǎng)站高并發(fā)不可或缺的一部分。
    的頭像 發(fā)表于 05-02 16:57 ?4627次閱讀
    <b class='flag-5'>Redis</b>為什么這么快!<b class='flag-5'>深入</b>了解<b class='flag-5'>Redis</b>的內(nèi)存模型!

    Redis混合存儲產(chǎn)品與架構(gòu)介紹

    摘要:?簡介 Redis混合存儲實例是阿里云自主研發(fā)的完全兼容Redis協(xié)議和特性的混合存儲產(chǎn)品。通過將部分冷數(shù)據(jù)存儲到磁盤,在保證絕大部分
    發(fā)表于 08-30 16:09 ?249次閱讀

    關(guān)于redis中數(shù)據(jù)存儲的機制解析

    不同于memcached等完全基于內(nèi)存的緩存中間件,Redis同時還提供了持久化功能,這也是為什么Redis不僅可以用來做數(shù)據(jù)緩存還可以用來做數(shù)據(jù)存儲,服務(wù)器節(jié)點宕機之后可以通過事先持久化的數(shù)據(jù)還原數(shù)據(jù)到某個時間點的狀態(tài)。
    發(fā)表于 09-02 10:46 ?1184次閱讀
    關(guān)于<b class='flag-5'>redis</b>中數(shù)據(jù)<b class='flag-5'>存儲</b>的機制解析

    探究Redis 性能測試與監(jiān)控

    很多人在安裝部署好Redis后,就沒有對Rredis的配置和部署等有效性和高可用性進行性能測試,最終導(dǎo)致上線出現(xiàn)緩存穿透、雪崩等現(xiàn)象,導(dǎo)致性能還是有問題,其實做為技術(shù)運維人員在部署好Redis后可以
    的頭像 發(fā)表于 10-12 09:19 ?1687次閱讀
    <b class='flag-5'>探究</b><b class='flag-5'>Redis</b> 性能測試與監(jiān)控

    Redis架構(gòu)演化之路

    這個架構(gòu)非常簡單,你的業(yè)務(wù)應(yīng)用可以把 Redis 當做緩存來使用,從 MySQL 中查詢數(shù)據(jù),然后寫入到 Redis 中,之后業(yè)務(wù)應(yīng)用再從 Redis 中讀取這些數(shù)據(jù),由于 Redis
    的頭像 發(fā)表于 08-03 16:54 ?840次閱讀
    <b class='flag-5'>Redis</b>架構(gòu)演化之路

    Redis實戰(zhàn)筆記

    《 2024最新Redis 實戰(zhàn)筆記》,這份筆記對 Redis 的相關(guān)知識做了系統(tǒng)全面的介紹,還是PDF版本,可自由復(fù)制,特別適合 Redis 初學(xué)者快速入門和提高。 ? 本筆記適合人群:前半部分適合
    的頭像 發(fā)表于 02-09 09:12 ?390次閱讀
    <b class='flag-5'>Redis</b>實戰(zhàn)筆記