<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                1)什么是持久化 redis所有數據保存在內存中, 對數據的更新將異步地保存到磁盤上 2)Redis持久化的實現方式 * 快照方式 Redis RDB * 寫日志 Redis AOF 3)RDB * 什么是RDB ![](https://box.kancloud.cn/01f055bf4c41321abb87a5ca9b1d6862_745x451.png) * 觸發機制-主要三種方式 第一種:save同步 當客戶端連接到redis服務器,執行save命令,此時redis會被阻塞,其他客戶端的請求就會被阻塞咯,等待save命令執行完畢后 第二種:bgsave異步 當客戶端連接redis服務器,執行bgsave命令,此時redis主進程會通過系統調用fork一個子進程出來,阻塞發生在fork階段,之后父進程還可以正常接收請求,有子進程創建生成RDB文件,成功后,通知redis主進程 第三種: 自動配置 save 900 1 save 300 10 save 60 10000 通過在配置文件redis.conf中配置,滿足任意一個條件,就觸發bgsave命令,通過異步地方式創建RDB文件(二進制) ![](https://box.kancloud.cn/39474588cd076be5b9c64d5587d2e8d1_847x351.png) 還有其他方式也會觸發生成RDB文件 比如shutdown(關閉redis),debug reload 總結: RDB是redis內存到硬盤的快照 save通常會阻塞客戶端命令 bgsave不會阻塞客戶端命令,但是會fork新進程 編寫redis.conf文件save命令,滿足任意一個條件就會觸發執行 比如shutdown,debug reload也會觸發生成RDB 4)AOF * RDB存在的問題 第一:耗時 如果數據量大,耗時時間更長,通過bgsave模式,需要執行fork(),消耗內存資源,磁盤I/O性能 第二:不可靠,會丟失部分數據 比如在上午9點執行了多個寫命令,在9點20分鐘滿足RDB自動創建的條件,此時生成一份RDB文件,然后9點22分鐘再次執行了很多寫命令,在9點30分鐘,redis機器故障,此時還沒有觸發條件也沒有手動save或bgsave,此時從9點20到9點30之間的keys就會被丟失 * 什么是AOF ![](https://box.kancloud.cn/075a38adc7f88d954a487c75c18ca91e_833x426.png) ![](https://box.kancloud.cn/51449066854298e03448c71a1e88bfa6_814x411.png) * AOF三種策略 # appendfsync always appendfsync everysec (每秒鐘寫一次) # appendfsync no 第一種:awlays redis寫命令刷新到緩沖區,然后實時每條命令fsync到硬盤 第二種:everysec redis寫命令刷新到緩沖區,然后每秒把緩沖區的命令fsync到硬盤到 第三種: no redis寫命令刷新到緩沖區,然后又OS系統覺得fsync到硬盤,一般不用 * AOF重寫 因為 AOF 的運作方式是不斷地將命令追加到文件的末尾, 所以隨著寫入命令的不斷增加, AOF 文件的體積也會變得越來越大,執行 BGREWRITEAOF 命令, Redis 將生成一個新的 AOF 文件, 這個文件包含重建當前數據集所需的最少命令。 AOF重寫的所用: 減少硬盤占有量和加速恢復速度 AOF重寫實現的兩種方式 第一種:通過bgrewriteaof client連接redis執行bgrewriteaof命令,redis立即返回ok,然后redis主進程通過fork()生成子進程,由子進程完成AOF重寫 第二種:通過aof重寫配置 ![](https://box.kancloud.cn/59d3e5b529f55cc89d7fd9d04a54d661_807x412.png) 重寫過程: 1)redis主進程通過fork創建子進程 2)子進程根據redis內存中的數據創建數據庫重建命令序列與臨時文件中 3)父進程繼續執行client的請求,并會把這些請求中的寫操作追加到原來AOF文件,額外,這些新的寫請求,也會放到一個緩存隊列中 4)當子進程重寫完成,會通知父進程,父進程把緩沖的命令追加到臨時文件中 5) 父進程用臨時文件替換老的AOF文件 配置如下 ~~~ appendonly yes # The name of the append only file (default: "appendonly.aof") appendfilename "appendonly.aof" # appendfsync always appendfsync everysec (每秒鐘寫一次) # appendfsync no no-appendfsync-on-rewrite no(yes) auto-aof-rewrite-percentage 100 auto-aof-rewrite-min-size 64mb aof-load-truncated yes dir /var/lib/redis ~~~ [root@huancun01 redis]# ll total 8 -rw-r--r--. 1 redis redis 1599 Feb 26 16:27 appendonly.aof -rw-r--r--. 1 redis redis 391 Feb 26 16:34 dump.rdb
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看