用戶對(duì)App后臺(tái)的響應(yīng)速度要求越來(lái)越高。把數(shù)據(jù)存儲(chǔ)在硬盤上,由于受到硬盤讀寫速度的限制,因此數(shù)據(jù)讀寫的速度有限。內(nèi)存比硬盤的讀寫速度高了個(gè)數(shù)量級(jí),因此基于內(nèi)存的數(shù)據(jù)讀取電比硬盤提高了個(gè)數(shù)量級(jí),而Redis正是基于內(nèi)存存儲(chǔ)數(shù)據(jù),保證了數(shù)據(jù)快速的讀寫速度。同時(shí)Redis提供了豐富的數(shù)據(jù)類型(string. hash、list. set及zset),給APP開發(fā)者帶來(lái)了很大的便利。深圳APP開發(fā)公司今天主要介紹Redis下面的內(nèi)容。
·Redis的功能簡(jiǎn)介
·常用數(shù)據(jù)結(jié)構(gòu)及應(yīng)用場(chǎng)景
·內(nèi)存優(yōu)化
·集群
·持久化
·故障排除案例
APP制作關(guān)于Redis簡(jiǎn)介
MvSQL被廣泛用于數(shù)據(jù)存儲(chǔ),但MySQL讀寫速度慢,隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展.越來(lái)越多的業(yè)務(wù)場(chǎng)景需要滿足下面的需求。
·少量數(shù)據(jù)需要被經(jīng)常讀寫,同時(shí)對(duì)讀寫速度要求非常高。
·能提供豐富的數(shù)據(jù)結(jié)構(gòu)。
·提供數(shù)據(jù)落地的功能。
APP制作如表7-1所示展示了計(jì)算機(jī)中主要存儲(chǔ)介質(zhì)的訪問(wèn)速度
我們?cè)诒?-1中可了解,從內(nèi)存中順序讀取1MB的數(shù)據(jù)耗時(shí)250000納秒,從磁盤中順序讀取1MB的數(shù)據(jù)耗時(shí)20000000納秒,內(nèi)存的讀取速度是硬盤的讀取速度的80倍。因此可以通過(guò)把內(nèi)存數(shù)據(jù)存儲(chǔ)在內(nèi)存來(lái)提升系統(tǒng)的性能。
Redis就是一個(gè)滿足上面需求的開源Kev-Value內(nèi)存存儲(chǔ)系統(tǒng)。Kev-Value存儲(chǔ)系統(tǒng)在寫入的時(shí)候,通過(guò)指定Kev及其對(duì)應(yīng)的Value;讀取的時(shí)候,通過(guò)指定Kev就能讀取Value的值。Redis有以下的特點(diǎn)。
·全部的數(shù)據(jù)操作在內(nèi)存,保證了高速的讀寫速度。
·提供豐富多樣的數(shù)據(jù)類型:string、hash、list. set. sorted set、bitmap和hyperloglog。
·提供了AOF和RDB兩種數(shù)據(jù)的持久化方式,保證了Redis重啟后數(shù)據(jù)不丟失。
·Redis的所有操作都是原子性,同時(shí)Redis還支持對(duì)幾個(gè)操作合并后的原子性操作,也即支持事務(wù)。
Redis豐富多樣的數(shù)據(jù)類型給數(shù)據(jù)存儲(chǔ)提供了種新的思路,其讓廣大的開發(fā)者存儲(chǔ)數(shù)據(jù)的時(shí)候,不用再面對(duì)功能單的數(shù)據(jù)庫(kù),APP開發(fā)者能利用Redis提供的靈活多變的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)操作更巧妙地存儲(chǔ)數(shù)據(jù)。
制作APP關(guān)于Redis的常用數(shù)據(jù)緒構(gòu)及應(yīng)用場(chǎng)景
深圳APP開發(fā)公司下面介紹Redis 5種常用的數(shù)據(jù)結(jié)構(gòu)(striug、hash、list. set. sorted s et),以及這些數(shù)據(jù)結(jié)構(gòu)所適用的業(yè)務(wù)場(chǎng)景。
本文今天介紹第一種:string--存儲(chǔ)簡(jiǎn)單的數(shù)據(jù)
1.簡(jiǎn)介
string類型是Redis中最基本的數(shù)據(jù)類型,其在Redis中是二進(jìn)制安全,意味著這種數(shù)據(jù)類型可以接受任何格式的二進(jìn)制數(shù)據(jù),例如一張JPEG格式的圖片或者JSON格式的字符串。在Redis中字符串類型最多可以容納的數(shù)據(jù)長(zhǎng)度是512MB。
2.數(shù)據(jù)模型
string類型是基本的Kev-Value結(jié)構(gòu),Key可以看作某個(gè)數(shù)據(jù)在Redis中的唯標(biāo)識(shí),Value是具體的數(shù)據(jù)。表7-2展示了基本Key-Value數(shù)據(jù)模型:
APP制作示意表7-2基本Key-Value數(shù)據(jù)模型
在表7-2中.Kev為“name”,對(duì)應(yīng)Value為“jeff”;Kev為“citv”,對(duì)應(yīng)Value為“Guaguzhou”。
3.應(yīng)用場(chǎng)景
由于string類型靈活,可以存儲(chǔ)大量的數(shù)據(jù),所以在App后臺(tái)中,string類型經(jīng)常會(huì)用來(lái)緩存數(shù)據(jù)。例如App中常見的商品分類欄,這類界面的特點(diǎn)是:訪問(wèn)頻率而,數(shù)據(jù)不經(jīng)常變動(dòng)(可能幾天)。所以為了提而這個(gè)界面的訪問(wèn)速度,把這個(gè)界面的數(shù)據(jù)放在Redis的個(gè)Kev-Value結(jié)構(gòu)中,一般情況下App后臺(tái)就從這個(gè)Kev讀取數(shù)據(jù);當(dāng)這個(gè)界面的數(shù)據(jù)發(fā)生變化時(shí),用新的數(shù)據(jù)覆蓋這個(gè)Kev的數(shù)據(jù)。假?zèng)]這個(gè)界面的數(shù)據(jù)對(duì)應(yīng)的Kev是“category”Value/J這個(gè)界面的JSON數(shù)據(jù),則Redis中對(duì)應(yīng)的模型如表7-3所示
制作APP操作示意圖表7-3分類界而對(duì)應(yīng)的Key-Value
當(dāng)App端需要通過(guò)API獲取這個(gè)界面的JSON數(shù)據(jù)時(shí),API請(qǐng)求到達(dá)App后臺(tái)通過(guò)Redis獲取Key“category”對(duì)應(yīng)的值,命令如下。
get category
一般來(lái)說(shuō),App端為了在網(wǎng)絡(luò)不可用的時(shí)候也有良好的用戶體驗(yàn),會(huì)在App本地也緩存份數(shù)據(jù),整個(gè)流程如圖7-4所示。
制作APP示意圖7-4APP顯示分類欄目流程圖
好了,APP開發(fā)公司關(guān)于制作APP時(shí)對(duì)于Redis功能介紹以及它的常用五種數(shù)據(jù)結(jié)構(gòu)中的第一種,本文就天就介紹到這里。博納網(wǎng)絡(luò)會(huì)在下期里面繼續(xù)介紹第二種,喜歡本站敬請(qǐng)持續(xù)關(guān)注。謝謝