1. 程式人生 > 遊戲資訊 >原神:綾人聖遺物及武器攜帶初評分析 專武和新聖遺物都不用入手

原神:綾人聖遺物及武器攜帶初評分析 專武和新聖遺物都不用入手

Redis是什麼

摘要:這篇筆記主要記錄了Redis的基本知識,記錄了我對Redis的最初的基本瞭解

目錄

1.引言

​ 隨著時代的發展以及人們對美好生活需求的日益提高,人們開始對手機軟體上的資訊查詢速度產生了苛刻的需求,人們都要求軟體要“快”,不快的話要麼罵手機商,要麼罵軟體商,如果有一位小姑娘在用新買的蘋果手機躺在網路良好的臥室逛網商的時候,搜了個熱款裙子卻半天出不來,她一定不會罵手機,而會罵網商的開發者,為了維護在使用者心中的良好形象,開發者們想到了一個好辦法,那就是根據二八原則,建立一個基於硬體的緩衝區,將使用者經常使用到的,或者當前熱門搜尋的資訊,實現放到這個緩衝區中,當用戶搜尋資料的時候事先從這裡進行搜尋,這樣就能保證搜尋的快速,只有當這個緩衝區中沒有資料的時候,才會從更加緩慢的資料庫中搜索資訊,這是一個類似於計算機內部CPU的快取記憶體以及記憶體與磁碟之間聯絡的關係。

​ 既然我們建立了這樣的一個更加快速的緩衝區,並且裡邊要存放資料,那麼自然而然的,裡邊要有一個管理系統,由於這個硬體區域是一個告訴快取資料區域,因此這個管理系統我們通常稱之為快取記憶體資料庫,Redis就是一種快取記憶體資料庫。

2.Redis的詳細知識

2.1.何為Redis

​ 我們已經知道Redis是一種快取記憶體資料庫了,接下來我們瞭解一下其更加具體的資訊。Redis是一款由義大利人Salvatore Sanfilippo開發的一款基於記憶體儲存的快取記憶體資料庫,全稱為:Remote Dictionary Server,直譯為:遠端字典服務,我們也稱之為遠端資料服務,為什麼叫字典呢?這是因為Redis的儲存邏輯為鍵值對的方式,屬於一種key-value的儲存系統,這種鍵值對的儲存邏輯是基於雜湊表思想的(並非完全基於雜湊表),而雜湊表的設計,實際上就和字典非常相似:通過一個鍵值,按照相應的查詢規則去尋找其所在的分類,進而獲得其詳細資訊。因此在有些語言中也成雜湊表為字典結構。Redis是基於C語言實現的,並且支援豐富的資料型別,如:String,list,set,zset,hash。在記憶體中執行的C程式,並且儲存位置也是位於記憶體中,而非位於磁碟中,那肯定是比SQL資料庫快的多,因此它被用於管理位於記憶體中的常用資料,以提升查詢速度,進而提升使用者體驗。

2.2.Redis的特性

​ Redis的儲存物理介質為記憶體,也就是說它管理的資料,主要是放在記憶體中的,它直接對記憶體中的資料進行各種操作,因此Redis具備普通SQL資料庫望塵莫及的速度,它每秒鐘的讀寫頻率,是遠遠超過面向硬碟儲存的SQL資料庫的。

​ 儘管Redis的資料是儲存在記憶體中,卻也是持久化的,因為計算機的斷電或重啟,它儲存的資料並不會丟失,這是因為它的儲存分為三個部分:記憶體儲存、磁碟儲存、日誌檔案,在通電執行的過程中,Redis會不斷的將記憶體中的資料存放入磁碟中進行備份,並且不斷生成相關的日誌記錄,可以理解為一個動態備份的過程,同時,由於快速快取區功能的定位,管理軟體Redis中因為使用者產生的新資料是遠遠少於它從磁碟中取得的資料的,也就是說,Redis中存在的大部分資料,實際上是磁碟中資料庫已經存有的資料,它只不過是拿過來提升這些資料的查詢速度而已,這些資料基本上很少被改動,因此在斷電之後,再重啟的話,Redis已經事先將少量的新資料存放入磁碟,且大量的原有資料本來就位於磁碟,它只需再重新從磁碟中載入這些資料即可,因此其具備持久化的能力,對於持久化過程中的一些具體操作細節,比如新資料累計到什麼程度再想磁碟中提交的一些選項,都可以在配置檔案中進行配置。

​ Redis支援主從模式,可以配置叢集,支援分散式部署,這樣使得它有能力支撐大型專案。

PS:在此,Redis位於的告訴快取區,實際上和計算機中的記憶體部分非常相似,裡邊的大部分資料是磁碟中已存在的,新資料並不多,儘管會產生新資料的提交,但這些行為也遠遠小於原有的資料量,並且新資料的提交會對使用者遮蔽,使用者不會感知到自己上傳的新資料被提交的過程,但是前端面向的直接資料儲存區實際上是這個快取記憶體區,因此使用者在提交資料之後會立即看到自己提交成功的結果,這些由於使用者提交的新資料不一定會立即提交到磁碟,但是最終一定會提交到磁碟,這由配置檔案決定,儘管小小的“欺騙”了使用者,但是在保證不出現提交錯誤的情況下,提升使用者的操作體驗,這是一種好事

2.3.Redis的應用場景

​ 在上面的引言中,也簡單介紹了一下這種告訴快取區的應用場景,現在我們來正式的介紹一下Redis的具體應用場景。

​ 首先,在我們進行專案開發的過程中,總是有一些經常需要調取的資料,如果我們將其存放在資料庫中,那麼其速度可能就會比較慢,這時我們使用Redis進行儲存,就可以快速調取到,明顯的提升執行速度。就比如在雙十一期間,由於某個帶貨主播的操作,導致了衣索比亞的日晒花魁咖啡豆成為了網紅食品,人們趨之若鶩(比如我),開始反覆的購買,因此這個原本被擱置在資料庫陰冷角落裡的東西一下子火了,但是,它位於資料庫,在硬碟中,人們從手機端發出請求之後,請求資訊通過原本就不快的還被鄰居家蹭的wifi好不容易傳輸到伺服器後,伺服器要從CPU向記憶體發出指令,讓位於記憶體中的oracle資料庫程序去找,oracle說沒問題啊,然後就開始在浩如煙海的磁碟碟片中開始了檢索,好不容易找到了,還要提交給記憶體,然後從記憶體中傳給CPU,CPU再將資料傳送給網路埠,最終又傳到了使用者手機上,這時使用者可能正在忙於和鄰居吵架,爭論是自己買咖啡重要,還是鄰居家的小孩看網課上清華重要,買咖啡豆的事情早已忘乾淨了。因此這時我們便需要快速快取區和裡邊的Redis上場,根據某位演算法大神書寫的使用者偏好搜尋演算法(我瞎編的),計算出了最近熱門的一些搜尋資訊,於是實現載入進快取記憶體區中,這樣使用者在查詢衣索比亞的日晒花魁時,伺服器在收到查詢指令後,只需直接從由記憶體構建的高速緩衝區檢索即可,記憶體的快速再加上Redis中的優質檢索演算法,速度要比之前的SQL資料庫搜尋提升不少,因此使用者很快就能獲取到商品的資訊,並確認購買,使用者開心,鄰居放心。

​ 因此可見,Redis確實是一個非常有用的,能夠很好提升使用者體驗的基礎服務軟體,非常值得大家來學習和使用。