Redis的特点持久化的原理及优缺点
目錄:
- Redis
- redis適合什么場景?
- redis持久化介紹
Redis
redis的概念:
Redis是一款開源的、高性能的鍵-值存儲(key-value store)。它常被稱作是一款數據結構服務器(data structure server)。
redis的數據類型:
- 字符串(strings)類型
- 列表(lists)
- 集合(sets)
- 有序集合(sorted sets)
- 哈希(hashes)
redis的優點
- 速度快
- 支持豐富數據類型: String ,List,Set,Sorted Set,Hash 。
- 豐富的特性
- 持久化存儲
redis的缺點
redis適合什么場景?
1、緩存
緩存現在幾乎是所有中大型網站都在用的必殺技,合理的利用緩存不僅能夠提升網站訪問速度,還能大大降低數據庫的壓力。Redis提供了鍵過期功能,也提供了靈活的鍵淘汰策略,所以,現在Redis用在緩存的場合非常多。(推薦:《Redis視頻教程》)
2、排行榜
很多網站都有排行榜應用的,如京東的月度銷量榜單、商品按時間的上新排行榜等。Redis提供的有序集合數據類構能實現各種復雜的排行榜應用。
3、計數器
什么是計數器,如電商網站商品的瀏覽量、視頻網站視頻的播放數等。為了保證數據實時效,每次瀏覽都得給+1,并發量高時如果每次都請求數據庫操作無疑是種挑戰和壓力。Redis提供的incr命令來實現計數器功能,內存操作,性能非常好,非常適用于這些計數場景。
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持久化介紹
第一種:RDB (將Redis中數據定時dump到硬盤)
第二種:AOF (將Reids的操作日志以追加的方式寫入文件)
RDB持久化原理
- RDB持久化是指在指定的時間間隔內將內存中的數據集快照寫入磁盤
- 實際操作過程是fork一個子進程,先將數據集寫入臨時文件,寫入成功后,再替換之前的文件,用二進制壓縮存儲
AOF持久化原理
AOF持久化以日志的形式記錄服務器所處理的每一個寫、刪除操作,查詢操作不會記錄,以文本的方式記錄,可以打開文件看到詳細的操作記錄。
RDB優缺點介紹(快照)
RDB優點
- 整個Redis數據庫將只包含一個文件,一旦系統出現災難性故障,我們可以非常容易的進行恢復。
- 性能最大化,它僅需要fork出子進程,由子進程完成持久化工作,極大的避免服務進程執行IO操作了。
- 相比于AOF機制,如果數據集很大,RDB的啟動效率會更高
RDB缺點
- RDB容易丟數據,因為系統一旦在定時持久化之前出現宕機現象,此前沒有來得及寫入磁盤的數據都將丟失
- RDB通過fork子進程來完成持久化的,如果當數據集較大時,可能會導致整個服務器停止服務幾百毫秒,甚至是1秒鐘
AOF優缺點介紹(鏡像)
AOF優點
- 數據安全性高,Redis中提供了3中同步策略,即每秒同步、每修改同步和不同步
- 由于該機制對日志文件的寫入操作采用的是append模式,因此在寫入過程中即使出現宕機現象,也不會破壞日志文件中已經存在的內容
- 如果日志過大,Redis可以自動啟用rewrite機制。即Redis以append模式不斷的將修改數據寫入到老的磁盤文件中
- AOF包含一個格式清晰、易于理解的日志文件用于記錄所有的修改操作。事實上,我們也可以通過該文件完成數據的重建
AOF缺點
- 對于相同數量的數據集而言,AOF文件通常要大于RDB文件,RDB 在恢復大數據集時的速度比 AOF 的恢復速度要快。
- AOF在運行效率上往往會慢于RDB
總結
以上是生活随笔為你收集整理的Redis的特点持久化的原理及优缺点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis常见面试题及答案模板
- 下一篇: 基于Redis的单点登录