什麼是redis,redis能做什麼,redis的應用場景
1. 什麼是Redis
Redis是由意大利人Salvatore Sanfilippo(網名:antirez)開發的一款記憶體高速緩存資料庫。Redis全稱為:Remote Dictionary Server(遠端資料服務),該軟體使用C語言編寫,Redis是一個key-value存儲系統,它支援豐富的資料類型,如:string、list、set、zset(sorted set)、hash。
Redis 是完全開源免費的,遵守BSD協定,是一個高性能的key-value資料庫。
Redis 與其他 key - value 緩存産品有以下三個特點:
Redis支援資料的持久化,可以将記憶體中的資料保持在磁盤中,重新開機的時候可以再次加載進行使用。
Redis不僅僅支援簡單的key-value類型的資料,同時還提供list,set,zset,hash等資料結構的存儲。
Redis支援資料的備份,即master-slave模式的資料備份。
2. Redis特點、優勢
Redis以記憶體作為資料存儲媒體,是以讀寫資料的效率極高,遠遠超過資料庫。以設定和擷取一個256位元組字元串為例,它的讀取速度可高達110000次/s,寫速度高達81000次/s。
Redis跟memcache不同的是,儲存在Redis中的資料是持久化的,斷電或重新開機後,資料也不會丢失。因為Redis的存儲分為記憶體存儲、磁盤存儲和log檔案三部分,重新開機後,Redis可以從磁盤重新将資料加載到記憶體中,這些可以通過配置檔案對其進行配置,正因為這樣,Redis才能實作持久化。
Redis支援主從模式,可以配置叢集,這樣更利于支撐起大型的項目,這也是Redis的一大亮點。
性能極高 – Redis能讀的速度是110000次/s,寫的速度是81000次/s 。
豐富的資料類型 – Redis支援二進制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 資料類型操作。
原子 – Redis的所有操作都是原子性的,同時Redis還支援對幾個操作全并後的原子性執行。
豐富的特性 – Redis還支援 publish/subscribe, 通知, key 過期等等特性。
3. Redis應用場景,它能做什麼
衆多語言都支援Redis,因為Redis交換資料快,是以在伺服器中常用來存儲一些需要頻繁調取的資料,這樣可以大大節省系統直接讀取磁盤來獲得資料的I/O開銷,更重要的是可以極大提升速度。
拿大型網站來舉個例子,比如a網站首頁一天有100萬人通路,其中有一個闆塊為推薦新聞。要是直接從資料庫查詢,那麼一天就要多消耗100萬次資料庫請求。上面已經說過,Redis支援豐富的資料類型,是以這完全可以用Redis來完成,将這種熱點資料存到Redis(記憶體)中,要用的時候,直接從記憶體取,極大的提高了速度和節約了伺服器的開銷。
注意:redis2.x版本不支援叢集 3.x支援叢集
4、Redis與其他key-value存儲有什麼不同?
Redis有着更為複雜的資料結構并且提供對他們的原子性操作,這是一個不同于其他資料庫的進化路徑。Redis的資料類型都是基于基本資料結構的同時對程式員透明,無需進行額外的抽象。
Redis運作在記憶體中但是可以持久化到磁盤,是以在對不同資料集進行高速讀寫時需要權衡記憶體,應為資料量不能大于硬體記憶體。在記憶體資料庫方面的另一個優點是, 相比在磁盤上相同的複雜的資料結構,在記憶體中操作起來非常簡單,這樣Redis可以做很多内部複雜性很強的事情。 同時,在磁盤格式方面他們是緊湊的以追加的方式産生的,因為他們并不需要進行随機通路。