Redis 的特性和持久化

2021-09-01 20:56:25 字數 1909 閱讀 1967

多資料庫

乙個 redis 例項可以包括多個資料庫。客戶端可以指定連線某個 redis 例項的哪個資料庫,就好比乙個 mysql 中建立多個資料庫,客戶端連線時指定連線哪個資料庫。

乙個 redis 例項最多可提供 16 個資料庫,下表從 0 到 15,客戶端預設連線第 0 號資料庫,也可以通過 select 選擇連線哪個資料庫。例如連線 1 號庫:

連線 0 號庫:

move newkey 1:將當前庫的 key 移植到 1 號庫

伺服器命令

ping,測試連線是否存活

echo,在命令列列印一些內容

select,選擇資料庫。redis 資料庫編號從0-15,可以選擇任意乙個資料庫來進行資料的訪問。

quit,退出連線。

dbsize,返回當刖資料庫中 key 的數目。

info,獲取伺服器的資訊和統計。

flushdb,刪除當前選擇資料庫中的所有key。

flushall,刪除所有資料庫中的所有key。

訊息訂閱與發布
subscribe channel:訂閱頻道,例如:subscribe mychat,訂閱 mychat 這個頻道

psubscribe channel*:批量訂閱頻道,例如:psubscribe s*,訂閱以 「s」 開頭的頻道

publish channel content:在指定的頻道中發布訊息,如 publish mychat 'tomorrow is another day!'

redis 事務

和眾多其它資料庫一樣,redis 作為 nosql 資料庫也同樣提供了事務機制。在 redis 中, multi/exec/discard/這三個命令是我們實現事務的基石。

redis 事務特徵

在事務中的所有命令都將會被序列化的順序執行,事務執行期間,redis不會再為其它客戶端的 請求提供任何服務,從而保證了事物中的所有命令被原原的執行

和關係型資料庫中的事務相比,在redis事務中如果有某一條命令執行失敗,其後的命令仍然會被繼續執行。

我們可以通過multi命令開啟乙個事務,有關係型資料庫開發經驗的人可以將其理解為」begin transaction」語句。在該語句之後執行的命令都將被視為事務之內的操作,最後我們可以通過

執行exec/discard命令來提交/回滾該事務內的所有操作。這兩個redis命令可被視為等同於關

系型資料庫中的commit/rollback語句。

在事務開啟之前,如果客戶端與伺服器之間出現通訊故障並導致網路斷開,其後所有待執行的 語句都將不會被伺服器執行。然而如果網路中斷事件是發生在客戶端執行exec命令之後,那麼 該事務中的所有命令都會被伺服器執行。

命令解釋

multi:開啟事務用於標記事務的開始,其後執行的命令都將被存入命令佇列,

直到執行exec 時,這些命令才會被原子的執行,

類似與關係型資料庫中的: begin transaction

exec:提交事務,類似與關係型資料庫中的:commit

discard:事務回滾,類似與關係型資料庫中的:rollback

發現有篇文章寫的挺詳細的, 我就不寫了。

redis持久化 AOF持久化

1.aof持久化原理 aof持久化會將被執行的寫命令寫到aof檔案的末尾。在恢復的時候,redis只要從頭到尾重新執行一次aof檔案包含的所有寫命令 2.配置選項 固態硬碟禁用always選項,在某些情況頻繁讀寫會大大降低固態硬碟的壽命 4.aof檔案的重寫和壓縮 aof檔案裡面記錄了所有的命令而不...

Redis的持久化

我們都知道,redis的資料都是儲存在記憶體裡面的,導致了redis有如下特點 1.由於記憶體的容量較小,並且速度很快,所以redis相對於mysql orcle等資料庫相比,儲存的容量較小,但是io速度特別快。2.由於記憶體的臨時儲存性,在機器斷電之後記憶體裡的內容將會丟失,若redis沒有持久化...

redis的持久化

redis有兩種持久化策略 rdb 是redis的預設持久化級制。相當於照快照,儲存的是一種狀態。優點 快照速度極快 還原資料速度極快 適用於災難備份 缺點 小記憶體機器不適合,適用於記憶體充裕的計算機 rdb機制符合要求就會找快照 隨時啟動,會突然的占用一部分系統資源 伺服器正常關閉 key滿足一...