1. 程式人生 > >關於Redis快取機制

關於Redis快取機制

注:參考部落格 https://blog.csdn.net/acmman/article/details/53167917

                      https://blog.csdn.net/lzl9421na/article/details/76651374

NoSql:泛指非關係型資料庫

一、為什麼要使用快取技術?

(1)持久化資料庫的缺點

關係型資料庫有Mysql、Oracle以及SqlServer等,在開發的過程中,資料通常都是通過Web提供的資料庫驅動來連結資料庫進行增刪改查,資料全部儲存在我們部署資料庫的機器的硬碟中。
當網站的處理和訪問量非常大的時候,資料庫的壓力就變大,降低資料庫的讀寫次數,我們就需要引入快取技術。

(2)快取

快取就是在記憶體中儲存的資料備份,當資料沒有發生本質改變的時候,我們就不讓資料的查詢去資料庫進行操作,而去記憶體中取資料,這樣就大大降低了資料庫的讀寫次數,而且從記憶體中讀資料的速度比去資料庫查詢要快一些,這樣同時又提高了效率。

如果有一些資料在短時間之內不會發生變化,而它們還要被頻繁訪問,為了提高使用者的請求速度和降低網站的負載,就把這些資料放到一個讀取速度更快的介質上(或者是通過較少的計算量就可以獲得該資料),該行為就稱作對該資料的快取。

快取的兩種形式:

頁面快取經常用在CMS(content manage system)記憶體管理系統裡面。

1.頁面快取 :

第一次從資料庫讀取,然後生成一個靜態頁面,以後所有的讀取,只需載入這個靜態頁面就可以了

資料快取經常會用在頁面的具體資料裡面

2.資料快取:

比如淘寶,商品隨時有變化,一個頁面需要從好幾種資料快取中讀取資料模組,這種就不適合用頁面快取

Redis介紹

Redis是Remote Dictionary Server(遠端資料服務)的縮寫,由義大利人antirez(Salvatore Sanfilippo)開發的一款記憶體快取記憶體資料庫,該軟體使用C語言編寫。

Redis內部是一個key-value儲存系統。它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、sset(sorted set –有序集合)和hash(雜湊型別,類似於Java中的map)。Redis基於記憶體執行並支援持久化的NoSQL資料庫,也被人們稱為資料結構伺服器


使用磁碟進行持久化(一邊執行,一邊把資料往硬碟中備份一份,防止斷電等情況導致資料丟失,等斷電情況恢復之後,Redis再把硬碟中的資料恢復到記憶體中),保證了資料的安全。

在記憶體資料庫方面的另一個優點是,相比在磁碟上相同的複雜的資料結構,在記憶體中操作起來非常簡單,這樣Redis可以

做很多內部複雜性很強的事情。

非常快,每秒可執行大約110000次的設定(SET)操作,每秒大約可執行81000次的讀取/獲取(GET)操作。

操作具有原子性 - 所有Redis操作都是原子操作,這確保如果兩個客戶端併發訪問,Redis伺服器能接收更新的值

redis和memcache比較
1.Redis不僅僅支援簡單的k/v型別的資料,同時還提供list,set,zset,hash等資料結構的儲存。
2.Redis支援master-slave(主-從)模式應用
3.Redis支援資料持久化,可以將記憶體中的資料保持在磁碟中,重啟的時候可以再次載入進行使用。
4.Redis單個value的最大限制是1GB,memcached只能儲存1MB的資料。

加上個人總結的部分,以上。