Redis的八大特性(優點)以及其使用場景介紹


Redis的八大特點(優點)

速度快
  說到Redis的速度快,大家的第一反應一定是內存讀取,那是肯定的,但如果面試的時候僅僅說到這點,那還是遠遠不夠的,至少還有以下三點要補充:

Redis是用C語言實現的,而眾所周知,C語言是“距離”操作系統最近的的編程語言,執行速度快
Redis采用了單線程的架構(這點很容易遺忘,但是是Redis的最重要特性),避免了多線程的資源競爭問題
Redis的源碼非常精簡,可以說是集性能和優雅於一身的代碼
基於鍵值對的服務器
  Redis的全程是Remote Dictionary Server,是集合了五種數據結構:字符串、列表、哈希、集合、有序集合,可以說五種數據結構都是圍繞於key-value的形式,而value不僅僅可以是值,還能是具體的數據結構,這給予了Redis強大的變化性和靈活能力。

豐富的功能
  除了數據結構的強大,另外就是Redis所提供的豐富的功能了:

提供了key過期的功能,這能運用於實現緩存
提供了發布訂閱的功能,可運用於消息隊列,如celery
支持lua腳本功能,當覺得Redis的命令實現功能不夠時,就能利用lua來創建新的功能
提供了簡單的事務功能,不過不能支持回滾,但也能一定程度上保持事務的特性
提供了pipeling功能,這樣客戶端可以將多條命令一次io,減少了網絡的開銷
簡單穩定
  Redis的簡單表現在兩方面,一方面是在3.0版本之前源代碼僅3萬行,后面3.0加入了集群后代碼加到了5萬行,而5萬行的源代碼對於開發人員來說,要理解掌握它也顯得並不是那么難;另一方面就是Redis是單線程的結構,這使得Redis的服務端處理模型變得簡單,客戶端開發也顯得簡單。
  Redis雖然代碼少,並且是單線程的,但是它又非常的穩定,很少會出現因為自身bug而down掉的情況。

客戶端語言多
  Redis目前基本可以說和MySQL的知名度一樣高了,太多的運用場景,太多的支持語言,常見的比如:java的jedis,Python的redis、PHP、C、C++等等。

持久化
  Redis還支持兩種方式的持久化,即將數據寫入磁盤的方法,RDB和AOF,兩種方法各有利弊,這里就不詳細介紹了。

主從復制
  那數據庫的主從復制、集群功能是非常重要的,可以在Redis異常掛了后不影響客戶端的使用,而Redis也是支持主從復制功能。

redis主從復制架構

 

 

 

 

高可用和分布式

  Redis從2.8版本后提供了高可用實現的Redis Sentinel,即Redis的“哨兵機制”,可以保證Redis節點的故障發現和自動轉移,這實現了Redis強大的分布式功能。

Redis的應用場景

緩存
  緩存可以說是Redis最常用的功能之一了,合理的緩存不僅可以加快速度的訪問速度,以及可以減少后端的壓力(通常就是MySQL的壓力)。可以說,一個合理的緩存可以極大地提高網站的性能。

排行榜系統
  利用Redis的列表和有序集合的特點,可以制作排行榜系統,而排行榜系統目前在商城類、新聞類、博客類等等,都是比不可缺的。

計數器應用
  計數器的應用基本和排行榜系統一樣,都是多數網站的普遍需求,如視頻網站的播放計數,電商網站的瀏覽數等等,但這些數量一般比較龐大,如果存到關系型數據庫,對MySQL或者其他關系型數據庫的挑戰還是很大的,而Redis基本可以說是天然支持計數器應用。

消息隊列系統
  Redis支持發布訂閱系統和阻塞隊列的功能,可以充當一般的消息隊列功能,雖然和專業的消息隊列MQ比如RebbitMQ比起來還優點差距,但也基本夠用了,比如celery的異步模型,Redis也是celery官方指定的2種隊列的一種。

社交網絡
  對於社交網絡來說,一般用戶量是及其龐大的,此時的關系型數據庫就捉襟見肘了,比如好有點贊、關注、推送等等功能,用Redis就能比較輕松地實現這些功能。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM