精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

深入探究Redis存儲原理

jf_78858299 ? 來源:老李說架構之道 ? 作者:夢海飛翔 ? 2023-02-15 15:52 ? 次閱讀

Redis是用C語言開發的一個開源的高性能鍵值對(key-value)內存數據庫。

Redis數據存儲原理

** 存儲結構如圖:**

圖片

redisDB、dict、dictht、dictEntry、RedisObject的存儲結構關系如圖:

圖片

占的字節數:

dictEntry :16字節、RedisObject:12字節、sds:8字節 + 字符串長度

我們現在思考,如果一個10字節的key,需要多少存儲空間呢?

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

結論:在key設置的時候盡量的少的字節,避免空間的浪費;

內存清理方式:

  • 定期清理

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

圖片

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

  • LFU

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

  • LRU

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

Redis數據固化方式

  • RDB快照方式

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

    優點:

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

    ** 缺點:**

    有數據丟失可能,備份文件版本兼容問題;
    

    ** 過程如圖:**

圖片* AOF快照方式

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

圖片

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

過程如圖:

圖片

Redis重啟恢復過程:

圖片

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

Redis可靠性保障

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

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

圖片

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

哨兵模式架構:

圖片

  • 集群模式

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

圖片

缺點:

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

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7598

    瀏覽量

    136206
  • 數據存儲
    +關注

    關注

    5

    文章

    963

    瀏覽量

    50858
  • 數據庫
    +關注

    關注

    7

    文章

    3765

    瀏覽量

    64276
收藏 人收藏

    評論

    相關推薦

    如何使用Rust連接Redis

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

    Redis Stream應用案例

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

    深入探究Linux的設備樹

    新版本linux設備樹講解!!ppt- 深入探究Linux的設備樹_2017.8.14.pdf
    發表于 07-03 08:03

    深入探究Linux的設備樹

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

    redis概述

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

    如何使得redis中的數據不再有

    ,原因是redis的持久化功能導致的,所謂的持久化就是redis在系統關閉的時候把數據存儲到硬盤中,在下一次啟動的時候,在從硬盤恢復到redis中,
    發表于 11-05 08:50

    電子狗工作原理深入探究

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

    簡要分析Redis的特性

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

    通過講述Redis的數據結構和主要命令對Redis的基本能力進行直觀介紹

    本文將從Redis的基本特性入手,通過講述Redis的數據結構和主要命令對Redis的基本能力進行直觀介紹。之后在性能調優等方面進行更深入的介紹和指導。
    的頭像 發表于 01-25 15:41 ?3943次閱讀

    Redis為什么這么快!深入了解Redis的內存模型!

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

    Redis混合存儲產品與架構介紹

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

    關于redis中數據存儲的機制解析

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

    探究Redis 性能測試與監控

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

    Redis架構演化之路

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

    redis的原理和使用場景

    、消息隊列、實時分析、排行榜和計數器等場景。本文將詳細介紹Redis的原理和使用場景。 一、Redis的原理 Redis的原理主要包括以下幾個方面: 內存數據庫:Redis是一種內存數
    的頭像 發表于 12-04 16:29 ?567次閱讀