目錄:
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沒有持久化...