Redis的特點 持久化的原理及優缺點

2021-10-03 06:31:26 字數 2227 閱讀 9692

目錄:

redis的概念:

redis是一款開源的、高效能的鍵-值儲存(key-value store)。它常被稱作是一款資料結構伺服器(data structure server)。

redis的資料型別:

redis的優點

單執行緒的redis為什麼這麼快

(一)純記憶體操作

(二)單執行緒操作,避免了頻繁的上下文切換

(三)採用了非阻塞i/o多路復用機制

redis 的出色之處不僅僅是效能,redis 最大的魅力是支援儲存多種資料結構,此外單個 value 的最大限制是1gb,不像 memcached只能儲存1mb的資料,因此redis可以用來實現很多有用的功能
訂閱發布 pub / sub 功能

key 過期策略

事務支援多個 db

計數

redis 提供 rdb 和 aof 兩種資料的持久化儲存方案,解決記憶體資料庫最擔心的萬一 redis 掛掉,資料會消失掉。
redis的缺點

由於 redis 是記憶體資料庫,資料庫容量受到物理記憶體的限制,不能用作海量資料的高效能讀寫

redis是單執行緒的,單台伺服器無法充分利用多核伺服器的cpu

1、快取

2、排行榜

很多**都有排行榜應用的,如京東的月度銷量榜單、商品按時間的上新排行榜等。redis提供的有序集合資料類構能實現各種複雜的排行榜應用。

3、計數器

4、分布式會話

集群模式下,在應用不多的情況下一般使用容器自帶的session複製功能就能滿足,當應用增多相對複雜的系統中,一般都會搭建以redis等記憶體資料庫為中心的session服務,session不再由容器管理,而是由session服務及記憶體資料庫管理。

5、分布式鎖

在很多網際網路公司中都使用了分布式技術,分布式技術帶來的技術挑戰是對同乙個資源的併發訪問,如全域性id、減庫存、秒殺等場景,併發量不大的場景可以使用資料庫的悲觀鎖、樂觀鎖來實現,但在併發量高的場合中,利用資料庫鎖來控制資源的併發訪問是不太理想的,大大影響了資料庫的效能。可以利用redis的setnx功能來編寫分布式的鎖,如果設定返回1說明獲取鎖成功,否則獲取鎖失敗,實際應用中要考慮的細節要更多。

6、 社交網路

點讚、踩、關注/被關注、共同好友等是社交**的基本功能,社交**的訪問量通常來說比較大,而且傳統的關聯式資料庫型別不適合儲存這種型別的資料,redis提供的雜湊、集合等資料結構能很方便的的實現這些功能。

7、最新列表

redis列表結構,lpush可以在列表頭部插入乙個內容id作為關鍵字,ltrim可用來限制列表的數量,這樣列表永遠為n個id,無需查詢最新的列表,直接根據id去到對應的內容頁即可。

8、訊息系統

訊息佇列是大型**必用中介軟體,如activemq、rabbitmq、kafka等流行的訊息佇列中介軟體,主要用於業務解耦、流量削峰及非同步處理實時性低的業務。redis提供了發布/訂閱及阻塞佇列功能,能實現乙個簡單的訊息佇列系統。另外,這個不能和專業的訊息中介軟體相比。

9、佇列

由於redis有list push和list pop這樣的命令,所以能夠很方便的執行佇列操作。

由於redis的資料都存放在記憶體中,如果沒有配置持久化,redis重啟後資料就全丟失了

redis提供兩種方式進行持久化:

第一種:rdb (將redis中資料定時dump到硬碟)

第二種:aof (將reids的操作日誌以追加的方式寫入檔案)

rdb持久化原理

rdb優缺點介紹(快照)

rdb優點

rdb缺點

aof優缺點介紹(映象)

aof優點

aof缺點

Redis資料持久化原理

redis 的資料全部在記憶體裡,如果突然宕機,資料就會全部丟失,因此必須有一種機制 來保證 redis 的資料不會因為故障而丟失,這種機制就是 redis 的持久化機制。redis 的持久化機制有兩種,第一種是快照,第二種是 aof 日誌。快照是一次全量備 份,aof 日誌是連續的增量備份。快照是...

Redis的AOF持久化底層原理

當對空白資料庫執行鍵值對命令時,rdb持久化是將鍵值儲存到rdb檔案中,而aof持久化儲存資料庫狀態的方法是將命令寫入到aof檔案中。被寫入aof檔案的所有命令都是以redis的命令請求協議格式儲存 的,因為redis的命令請求協議是純文字格式,所以我們可以直接開啟 乙個aof檔案,觀察裡面的內容。...

Redis的持久化

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