Redis的優缺點

(自己整理的,可能沒有那麼全覆蓋的完整)
redus簡介
Redis是一個開源的使用ANSI 由C語言編寫、遵守BSD協議、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。
它通常被稱爲數據結構服務器,因爲值可以是set、zset、list、hash、string這五種類型

redis的優點:

1、支持多種數據類型(同簡介中有寫的五種數據類型)
redis支持set,zset,list,hash,string這五種數據類型,操作非常方便,如果在做好友系統,查看自己的好友關係,如果採用其他的key-value系統,則必須把對應的好友拼接成字符串,然後在提取好友時,再把value進行解析,而redis則相對簡單,直接支持list的存儲(採用雙向鏈表或者壓縮鏈表的存儲方式)。

2、持久化存儲
作爲一個內存數據庫,最擔心的,就是萬一機器死機宕機,數據就會消失掉。redis使用RDB和AOF做數據的持久化存儲。主從數據同時,生成rdb文件,並利用緩衝區添加新的數據更新操作做對應的同步。

3、性能很好
由於是全內存操作,所以讀寫性能很好,可以達到10w/s的頻率。公司有項目使用redis,目前的訪問頻率是80w/s,通過適當的部署,線上運行一切ok的。

redis的缺點:

1、由於是內存數據庫,所以單臺機器存儲的數據量跟機器本身的內存大小有關。雖然redis本身有key過期策略,但是還是需要提前預估和節約內存。如果內存增長過快,需要定期刪除數據。
1.1、定時刪除和定期刪除爲主動刪除,Redis會定期主動淘汰一批已過去的key。
1.2、惰性刪除爲被動刪除,用到的時候纔會去檢驗key是不是已過期,過期就刪除過期的key
1.3、惰性刪除是redis服務器內置策略
(過期的key對aof文件沒有任何影響,刪除過期的key時系統會向aof文件追加一條del;如果key過期了但是沒有刪除,此時進行持久化操作這個key不會進入aof文件,因爲沒有發生修改指令)

2、如果進行完整重同步,由於需要生成rdb文件,並進行傳輸,會佔用主機的CPU,並會消耗現網的帶寬。不過redis2.8版本以後,已經有部分重同步的功能,但是還是有可能有完整重同步的。比如,新上線的從庫。

3、修改配置文件,進行重啓,將硬盤中的數據加載進內存,時間比較久。在這個過程中,redis不能提供服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章