溫馨提示×

溫馨提示×

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

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

使用Redis做緩存的原因有哪些

發布時間:2021-11-11 11:09:32 來源:億速云 閱讀:181 作者:小新 欄目:數據庫

這篇文章給大家分享的是有關使用Redis做緩存的原因有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

對Redis,百度百科給出的的解釋是

“Redis(Remote Dictionary Server ),即遠程字典服務,是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API”

“Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部 分場合可以對關系數據庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便?!?/p>

那么,Redis有什么優點

  • Redis支持數據持久化

  • Redis的讀寫性能非常優異

  • 豐富的特性:可用于緩存,消息,按key設置過期時間,過期后將會自動刪除

  • 支持事務,Redis的所有操作都是原子性的,同時Redis還支持對幾個操作合并后的原子性執行。

  • Redis的數據結構豐富,除了支持string類型的value外還支持hash、set、zset、list等數據結構。

相對應的,Redis也有缺點

  • 數據庫容量會受到物理內存的限制,不能用作海量數據的高性能讀寫,因此Redis適合的場景主要局限在較小數據量的高性能操作和運算上。

  • Redis 不具備自動容錯和恢復功能,主機從機的宕機都會導致前端部分讀寫請求失敗,需要等待機器重啟或者手動切換前端的IP才能恢復。

  • 如果主機宕機,宕機前有部分數據未能及時同步到從機,切換IP后還會引入數據不一致的問題,降低了系統的可用性。

  • Redis 較難支持在線擴容

  • Redis是單線程的,單臺服務器無法充分利用多核服務器的CPU

為什么我們要使用Redis呢?

從高并發上來說:

  • 直接操作緩存能夠承受的請求是遠遠大于直接訪問數據庫的,所以我們可以考慮把數據庫中的部分數據轉移到緩存中去,這樣用戶的一部分請求會直接到緩存這里而不用經過數據庫

從高性能上來說:

  • 用戶第一次訪問數據庫中的某些數據。因為是從硬盤上讀取的所以這個過程會比較慢。將該用戶訪問的數據存在緩存中,下一次再訪問這些數據的時候就可以直接從緩存中獲取了。操作緩存就是直接操作內存,所以速度相當快。如果數據庫中的對應數據改變的之后,同步改變緩存中相應的數據

為什么要使用Redis而不是其他的,例如Java自帶的 map 或者 guava

  • 緩存分為本地緩存和分布式緩存。以 Java 自帶的 map 或者 guava為例子, 實現的是本地緩存,最主要的特點是輕量以及快速,生命周期隨著 jvm 的銷毀而結束,并且在多實例的情況下,每個實例都需要各自保存一份緩存,緩存不具有一致性。

  • 使用 redis 或 memcached 之類的稱為分布式緩存,在多實例的情況下,各實例共用一份緩存數據,緩存具有一致性。缺點是需要保持 redis 或 memcached服務的高可用,整個程序架構上較為復雜。

Redis為什么這么快

  • 完全基于內存,絕大部分請求是純粹的內存操作,非??焖?。數據存在內存中

  • 數據結構簡單,對數據操作也簡單

  • 采用單線程,避免了不必要的上下文切換和競爭條件,也不存在多進程或者多線程導致的切換而消耗 CPU

  • 使用多路 I/O 復用模型,非阻塞 IO

感謝各位的閱讀!關于“使用Redis做緩存的原因有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女