redis全記憶體運行

來源:互聯網
上載者:User

標籤:

在某些使用情境中,我們並不需要使用redis的持久化,反而需要發揮redis的記憶體資料庫特性,實現完全記憶體運行,達到需要的高效能。

Redis 本身支援持久化,通過在一定時間間隔或觸發操作,將記憶體中的資料同步到磁碟來保證持久化。Redis 支援兩種持久化方式,一種是  Snapshotting(快照),儲存為dump.rdb檔案,也是預設,另一種是 Append-only file(縮寫aof)的方式,儲存為 .aof 檔案。

Snapshot 快照 通過save或者bgsave命令通知redis做一次快照持久化。save操作是在主線程中儲存快照的,由於redis是用一個主線程來處理所有用戶端的請求,這種方式會阻塞所有用戶端請求。所以不推薦使用。另一點需要注意的是,每次快照持久化都是將記憶體數據完整寫入到磁碟一次,並不是增量的只同步增量資料。如果資料量大的話,寫操作會比較多,必然會引起大量的磁碟IO操作,可能會嚴重影響效能。

在預設的快照 rdb儲存方式中,redis.conf 裡面的配置如下

save 900 1   #900秒內如果超過1 個key 被修改,則發起快照儲存 save 300 10  #300秒內容如超過10個key 被修改,則發起快照儲存 save 60 10000

如果我們需要關閉快照,只需要將這幾行注釋了,然後重啟 redis 即可。

如果是正在啟動並執行執行個體,可以使用 redis-cli的命令

# 查看當前配置config get save# 關閉快照config set save ""

來線上更新配置,輸出OK表示設定成功。


AOF  比快照方式有更好的持久化性,是由於在使用aof 持久化方式時, redis 會將每一個收到的寫

命令都通過write函數追加到檔案中(預設是appendonly.aof) 。當redis 重啟時會通過重新執行檔案中

儲存的寫命令來在記憶體中重建整個資料庫的內容

預設配置如下:

appendonly yes      //啟用日誌追加持久化方式#appendfsync always //每次收到寫命令就立即強制寫入磁碟,最慢的,但是保證完全的持久化,不推薦使用appendfsync everysec //每秒鐘強制寫入磁碟一次,在效能和持久化方面做了很好的折中,推薦#appendfsync no //完全依賴作業系統,效能最好,持久化沒保證

我們需要更新設定檔為:

appendfsync no

線上更新配置使用

# 查看當前配置config get appendfsync# 關閉快照config set appendfsync no

通過這兩個配置,redis就可以完全在記憶體運行。

如果想手動進行持久化,可以使用Redis的 bgsave 和 bgrewriteaof 來手動進行持久化。


redis全記憶體運行

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.