中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis的功能有哪些

發布時間:2020-12-28 14:30:53 來源:億速云 閱讀:151 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關Redis的功能有哪些,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

你需要一個經典數據庫嗎?

一段時間以來,巨大數量的數據處理迫使所有的應用程序在數據庫層前添加緩存策略。即使經典數據庫進行了大量的下劃線優化,仍然不能提供足夠的速度和可用性。主要原因在于數據存儲越遠,獲取數據就越困難。另一個原因是因為數據庫中的數據通常保存在磁盤中,而不是在內存。經典數據庫卻是在內存上嵌入了緩存來優化,但是擁有一個專用的獨立緩存也是一種很常用的策略。

在解決訪問數據庫的性能問題,通常的解決方案是緩存。緩存并不新鮮,緩存實際上是把經常訪問的少量數據保存在離你更近的地方。我們在處理器上有緩存,數據庫中也有緩存,你甚至可以在自己的應用中編寫緩存。

但隨著事情的發展,現在我們有來高可用的分布式內存緩存,可以被不同的實例同時使用。

緩存——Redis

也許最流行的分布式內存數據存儲是Redis,它不是緩存,但被當作緩存使用。 引用官方的描述如下:

Redis是一個開源的(BSD協議),內存中的數據結構存儲,它可以用作數據庫,緩存,消息代理。它支持的數據結構包括字符串,哈希,列表,集合,有序集合,位圖,超級日志,具有半徑查詢和流的地理空間索引和流,Redis具有內置復制,Lua腳本,LRU驅逐,事務和不同級別的磁盤持久化,并通過Redis哨兵和Redis集群自動分區。

Redis速度很快,它被認為是目前最快的數據存儲之一。它對CPU緩存進行了優化,并且沒有上下文切換。從一開始它就被設計成了內存數據庫,這不僅意味著將數據從磁盤移動到內存,它從一開始就針對性的優化了。

由于Redis速度非常快,可以存儲各種數據結構,因此它是分布式緩存的一個很好的備選。

因為作為緩存,Redis獲得了非常高的人氣。有一些緩存加載器庫在使用Redis作為應用程序和數據庫之間的緩存層。以Redisson地圖加載器為例:

Redis的功能有哪些

因此,使用分布式緩存可以極大的提高性能。但是代碼和架構變得更復雜了。數據被復制到數據庫和緩存中,我們必須保持它們的數據同步。代碼應該管理整個緩存策略,控制緩存失效,重新填充緩存,都是為了保持數據的一致性。我們實現了更高的性能和可伸縮性,但引入了高風險的復雜性。

數據是重復的

你可能會問為什么要在兩個地方都保存數據?不能只保存Redis中的數據嗎?如果這樣做我們可以減少代碼的復雜性。但首先讓我們看看經典數據庫的一下特點和優勢,看看我們是否可以直接使用Redis實現這些。

關系型數據庫的優點

傳統來說,緩存是不會長期保存數據的。我們將數據保存在緩存中只是為了快速的訪問,但是為了長時間的持久性,我們通常使用一個中央數據庫。

除了數據的持久性以外,關系型數據庫提供了數據一致性等其他特點。使用關系型數據庫,你可以定義數據間的關系,約束,復雜查詢,構建它是為了保證多個相關表間的一致性。

它有一些重要的優勢,即使NoSQL數據庫很流行,關系型數據庫也不會很快消失。

但是使用Redis作為緩存和關系型數據庫搭配使用,增加了一層復雜性,因為你必須通過代碼保持兩者的數據同步。

考慮到你的緩存策略,你不得不構建一些復雜的代碼在Redis和數據庫間進行數據發送。不要誤解我的意思,有時候你必須這么做。就像之前提到的,關系型數據庫有它的優點,我們不能把它扔掉。

但是我們必須每次都這么做嗎?如果不同數據間不需要非常復雜的關系,而只存儲一個鍵映射就足夠了呢?我們是不是可以不用關系型數據庫了?

Redis作為中央數據存儲

如前所述,關系型數據庫的優點是一致性和持久性。如果我們不需要數據之間的關系映射,那么它將只保留持久性。有很多NoSQL數據庫提供鍵映射存儲,但我們可以直接使用Redis。

Redis的功能有哪些

Redis持久化

Redis有兩種持久化模型:RDB和AOF。

RDB在指定的時間間隔保存數據快照。它們非常適合快速恢復備份。RDB最大化了Redis的性能,因為父進程所做的唯一工作就是fork創建快照的子進程。

但是由于RDB在一定時間間隔執行計劃,如果你無法承受丟失一些數據,那么這就不是一個好的選擇。fork是一個高成本的操作,不能在每次數據變化都進行fork,因此可能會出現最近的數據沒有被保存在快照中的情況。

AOF是一個不同的持久化模型。它是由一個只能追加的文件組成,只在其中添加所有數據。它更持久,因為fsync策略通常比整個RDB更有計劃性。由于該文件僅用于追加,因此數據是不可更改的。即使在最后一條數據沒有完全寫完而出現斷電,也可以很容易的重新斷電前的構建狀態。

但是它也有缺點。第一個是AOF文件通常比RDB更大。另外,如果fsync策略被調度的太頻繁,舉個例子,在每次寫命令之后,那么性能會大打折扣。在默認情況下,fsync每秒運行一次。

你應該使用哪個?

如果你想要一個類似Postgres提供的安全級別,你將不得不兩種情況都使用。使用RDB可以讓你在重啟后更快的恢復備份;使用AOF可以避免數據丟失。但是如果你能承受一些數據損失,那可以只使用RDB。記住,Redis會把它們合并成一個單一的持久化模型。

其他優勢

未來是屬于字節尋址的

由于磁盤旋轉在很長一段時間都是持久化單元,所以當前的大多數數據庫仍然在適應磁盤的旋轉方面進行優化。比如數據定位,以減少磁盤旋轉滯后,甚至選擇了專門的格式,將索引放在了盤片的特定部分。但是這些優化對于當前的技術,比如SSD,是沒有意義的。Redis存儲數據是為字節尋址優化的。未來是屬于字節尋址的,而Redis已經在那里了。

可伸縮性和高可用性

Redis提供了不同的方式來實現伸縮性和高可用性。

你可以在不同的Redis節點上分割數據來實現水平的可擴展性。分片將減輕單個實例的負擔,你將受益于多核和計算能力。但是你應該知道分片的局限性,因為不能支持多鍵操作和事務。

通過復制獲得高可用性。主節點是同步復制的,可以免受節點故障,數據中心故障和Redis進程故障。如果主節點宕機,副節點將會取而代之。在不同的AZ中也有一個副本,這將保護你免受災難時間的影響,比如整個AZ失敗。

如果你打算使用Redis企業集群,所有的這些對你都是抽象的,你將擁有分片和高可用性,而不需要額外的代碼。你可以通過編碼連接到一個Redis實例。

復雜數據結構

Redis不僅可以處理字符串,還可以處理不同的數據結構,如:二進制安全字符串,列表,集合,排序集合,位圖,超級日志,流等等。這使得Redis不僅是一個鍵值存儲,更是一個完整的數據結構服務器

不是銀彈

一切聽起來都非常棒,但是作為一個事實,沒什么東西是銀彈,Redis也不是。主要的缺點是所有的數據都應該裝進內存中。這使Redis適合那些有足夠內存進行存儲的數據。如果沒有,那就必須將數據拆分。但是你會失去一下保證,如事務,管道,或發布/訂閱。

關于Redis的功能有哪些就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

全南县| 黄龙县| 阳东县| 荥经县| 青铜峡市| 灵川县| 镇巴县| 平武县| 山丹县| 同德县| 巫溪县| 河源市| 富顺县| 于都县| 柳林县| 门头沟区| 神木县| 溧水县| 伊通| 屏南县| 贡山| 汶上县| 建水县| 兖州市| 京山县| 南郑县| 金秀| 甘德县| 湖州市| 萨嘎县| 甘南县| 乳山市| 汕尾市| 枣阳市| 吴川市| 永定县| 江阴市| 房产| 镶黄旗| 新民市| 会理县|