麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數(shù)據(jù)庫 > Redis > 正文

深入剖析Redis性能信息

2020-02-17 14:54:46
字體:
供稿:網(wǎng)友

武林技術(shù)頻道的小編為方便各位小伙伴學(xué)習(xí)Redis,今天給小伙伴帶來這篇深入剖析Redis性能信息,小編通過Visual Studio上的C#程序?qū)ζ溥M(jìn)行了分析,如果想了解下面的知識(shí),請(qǐng)前往進(jìn)行學(xué)習(xí)。

多少次你發(fā)現(xiàn)自己在幾個(gè)月的開發(fā)和無數(shù)的努力后陷入了毫無性能而言的web應(yīng)用?多少次你在好奇如果你無法向普通用戶傳達(dá)快與最快的標(biāo)準(zhǔn),你的客戶還應(yīng)該把你當(dāng)作專家?多少你聽到有關(guān)Google和Facebook一些糟糕的對(duì)比?讓我告訴你,我的客戶是怎么看待這些的:

我曾開發(fā)一個(gè)有著復(fù)雜處理和過濾的web應(yīng)用,因?yàn)楹芏鄻I(yè)務(wù)規(guī)則和UI要求。再加上一些過時(shí)技術(shù)的第三方提供者,對(duì)于他們而言,速度意味著15年的工作丟進(jìn)垃圾桶,然后重新開始。我的應(yīng)用不是那么快,有時(shí)處理一個(gè)請(qǐng)求花費(fèi)6~8s才會(huì)處理完,業(yè)務(wù)規(guī)則的驗(yàn)證、過濾和格式化響應(yīng)。而客戶不接受這樣。并說如果Google做就會(huì)做好。同樣,F(xiàn)acebook也行。我無法向客戶解釋速度后面的硬件是多么的龐大,服務(wù)器的壓力怎樣。我僅僅回復(fù)說可以做更好,我在記住Redis后保證可以做到。


那么,在我們深入Redis之前,我先介紹下NoSql。

大多數(shù)開發(fā)者習(xí)慣用關(guān)系型數(shù)據(jù)庫。數(shù)據(jù)驅(qū)動(dòng)開發(fā)或者領(lǐng)域驅(qū)動(dòng)開發(fā)(作為一個(gè)整體框架編碼或者用Fluent API NHibernate),關(guān)系型數(shù)據(jù)庫的概念一樣。另一方面,NoSql引領(lǐng)了新的數(shù)據(jù)存儲(chǔ)時(shí)尚。在.NET社區(qū)最流行的是MongoDb,RavenDb和Redis。我已經(jīng)寫了一篇怎么使用MongDb的文章,你可以在這里找到。我使用它記錄重要活動(dòng)、錯(cuò)誤和異常等的日志。

在NoSql的世界里,概念和所有流行的數(shù)據(jù)庫基本是一樣的。基本上它是存在你機(jī)器上某處的JSon文檔或者你可以操作的某種.NET客戶機(jī)或驅(qū)動(dòng)。NoSql的偉大之處在于它解決了關(guān)系型數(shù)據(jù)庫與OO語言如C#或Java時(shí)的一個(gè)主要缺點(diǎn):錯(cuò)配阻抗。


Redis其實(shí)和任何的NoSql數(shù)據(jù)庫一樣。但是它是一個(gè)內(nèi)存數(shù)據(jù)庫而表現(xiàn)十分出色。

簡(jiǎn)單的說,Redis可以給你難以置信的存取你的對(duì)象狀態(tài)的能力從而使你的應(yīng)用更加快速。有時(shí)候,你的應(yīng)用速度可以優(yōu)化8到10倍。這并不是開玩笑的而且你不需要背后有Google或Facebook那樣的基礎(chǔ)設(shè)施。如果你想知道更多的關(guān)于Redis背后的思想和它的歷史的內(nèi)容,可以上網(wǎng)查找更多。有很多文章是關(guān)于這些的。

Redis代表了遠(yuǎn)程字典服務(wù)( Remote Dictionary Service) 。它是一個(gè)鍵值存儲(chǔ)就像C#的字典對(duì)象。所以讓我們看看如何使用:


首先,按照下面的步驟安裝并運(yùn)行Redis:

  • ??? 打開redis.io,下載win64版本的redis(它并不會(huì)根據(jù)你的系統(tǒng)指定相應(yīng)的版本)
  • ??? 將下載的內(nèi)容復(fù)制到Redis文件夾(你也可以命名為其他你喜歡的名字)
  • ??? 點(diǎn)擊 redis-server.exe 啟動(dòng)服務(wù)端
  • ??? 點(diǎn)擊 redis-client.exe 運(yùn)行客戶端命令行工具
  • 現(xiàn)在我們?cè)囍\(yùn)行一些基本的命令來檢測(cè)安裝是否正確。在客戶端命令行界面:
  • ??? 輸入 set azul "hello world" 來添加一條記錄,你會(huì)收到ok的反饋。這意味著你已經(jīng)添加了一個(gè)鍵為azul值為"hello world"的條目(順便說下,azul在卡拜爾語中是問候的意思)
  • ??? 輸入 get azul取得相應(yīng)的值,你會(huì)收到反饋 hello world
  • ??? 輸入 delete azul會(huì)刪除這個(gè)條目

因?yàn)镽edis是一個(gè)字典,可以以如下方式保存鍵值:
?

復(fù)制代碼 代碼如下:
Set schedule:1 "{'origin':'Montreal','destination':'Toronto'}"

?

在這個(gè)示例中的值是一個(gè)json對(duì)象。這意味著你可以向Redis中添加復(fù)雜的對(duì)象。但沒必要這么做,因?yàn)镽edis支持5種數(shù)據(jù)類型以滿足你的需求。

你也可以以如下方式指定key:
?

復(fù)制代碼 代碼如下:
Set schedule:id 1

?

對(duì)于執(zhí)行多個(gè)set 和get,可以使用mset 和mget來代替。我將不再對(duì)這些命令進(jìn)行討論。你可以查看Redis文檔并盡情嘗試。

幕后

到目前為止我們所做的一切都打破了常規(guī)。但在幕后卻是Redis客戶端通過Redis協(xié)議向服務(wù)器發(fā)送指令。服務(wù)器對(duì)內(nèi)存中的數(shù)據(jù)執(zhí)行這些指令,并返回響應(yīng)結(jié)果。
做為服務(wù)的Redis

你可以在物理機(jī),虛擬機(jī)上使用Redis,也可以將Redis做為云服務(wù)。很多像Digital Ocean和Widnows Azure這類的供應(yīng)商都提供該服務(wù)。我們將從Digital Ocean開始(主要考慮到價(jià)錢,并且我認(rèn)為Azure的Redis服務(wù)有點(diǎn)貴)


我們使用PuTTY的ssh(安全連接模式)來連接到Digital Ocean。下載PuTTY并將IP地址配置為你的DO droplet地址(droplet是你在DO上創(chuàng)建的linux主機(jī))。然后啟動(dòng)PuTTY并用DO提供的root賬戶和密碼登錄。運(yùn)行以下命令以保持你的linux主機(jī)的更新:apt-get update (linux用戶現(xiàn)在很激動(dòng)吧).

現(xiàn)在你正在或已經(jīng)保持更新了。然后運(yùn)行apt-get install build-essential為你的linux服務(wù)器安裝所有缺失的工具。哦了。另外對(duì)于這些設(shè)置還有很多更詳細(xì)的博文。我不得不承認(rèn),因?yàn)槲覍?duì)linux世界不太熟悉,所以在配置的時(shí)候著實(shí)費(fèi)了翻手腳。

在 Visual Studio 中使用

在起始頁,添加一個(gè)MVC項(xiàng)目,并使用Nuget包管理器添加Servicestack.redis。這樣你就可以連接到Redis并做一些有意思的事。

你需要按以下步驟做來連接Redis并被取得緩存的對(duì)象列表。
?

using(IRedisClient client = RedisClient) {  var scheduleClient= client.GetTypedClient();  var schedules = scheduleClient.GetAll(); }

哪怕你緩存了很多對(duì)象這也是一個(gè)非常快速的操作。在Redis中緩存即用的對(duì)象是很好的想法,這免去了可能的業(yè)務(wù)處理操作(應(yīng)用規(guī)則或其他過濾和格式化操作).

數(shù)據(jù)庫中重復(fù)提取的對(duì)象(很多時(shí)候是相同的)最好放到Redis中。通常我們要在倉庫中緩存的數(shù)據(jù)(更多細(xì)節(jié)請(qǐng)瀏覽緩存?zhèn)}庫模式cached repository pattern)也最好放到Redis中。這樣你就可以快速取得操作結(jié)果,大幅提升Web應(yīng)用的整體性能。


注意scheduleClient將會(huì)暴露很多有關(guān)增加、添加、移除和使用列表、哈希等的函數(shù)。嘗試下探索更多。。。

你也可以設(shè)置你的Redis客戶端來看一下(不是用Glimpse-;))在添加monitor command的這種情況下發(fā)生了什么(在我們開始時(shí)添加azul的同一個(gè)地方)。

在完整的反HelloWorld應(yīng)用風(fēng)格(我承認(rèn)我是其中之一!)的勇士興奮的跳向天空之前,我還應(yīng)該提醒一件事:從你的控制器連到你的數(shù)據(jù)庫(就是Redis!)不是個(gè)好主意,如果這對(duì)你來說很奇怪,我認(rèn)為你需要讀一些關(guān)于設(shè)計(jì)和架構(gòu)方面的東西。我不理解Microsoft的指導(dǎo)書讓用戶添加一個(gè)MVC項(xiàng)目,你就可以開始構(gòu)建一耳光偉大的商業(yè)web應(yīng)用了。因?yàn)椴皇沁@樣。


然而,下面是一個(gè)添加對(duì)象的例子,在這個(gè)情況下式一個(gè)調(diào)度器:

?

//domain object public class Schedule  {  public int Id {get; set;}  public string Origin {get; set;}  public string Destination {get; set;} }   using(IRedisClient client = RedisClient) {  var scheduleClient= client.GetTypedClient();  var schedule= new Schedule  {    Id= scheduleClient.GetNextSequence(),    Origin ="Montreal",    Destination = "Quebec" }  var schedules = scheduleClient.Store(schedule); }

因?yàn)镽edis是一個(gè)緩存服務(wù),是可以通過設(shè)置一個(gè)超時(shí)時(shí)間讓輸入過期。你也可以通過移除那個(gè)超時(shí)來逆向這個(gè)過程。

這僅是一個(gè)關(guān)于深入剖析Redis性能信息的簡(jiǎn)介,給你提供一個(gè)提高web引用性能的方法啟示。在某些情況下,Redis可能會(huì)給你一些你的客戶或者老板沒有給你的,關(guān)于構(gòu)建可靠軟件的激情的認(rèn)可。希望這能幫到一些人!更多關(guān)于Redis的內(nèi)容,可以多多關(guān)注下武林技術(shù)頻道

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 国产一区二区三区在线观看视频 | 九九精品视频免费 | 成人做爰www免费看 欧美精品免费一区二区三区 | 欧美精品一区二区三区久久久 | 蜜桃视频在线观看免费 | 毛片在线免费观看网址 | 国产黄色一区二区 | 成人在线网站 | 久久精品一区二区三区国产主播 | 一区二区久久 | 欧美黄色三级视频 | 成人午夜视频网站 | 男男啪羞羞视频网站 | 成人毛片视频免费看 | 成人男女啪啪免费观看网站四虎 | 久久精品亚洲欧美日韩精品中文字幕 | 99亚洲视频 | 国产合集91合集久久日 | 国产日韩中文字幕 | 特色一级黄色片 | 男女生羞羞视频网站在线观看 | 日韩精品久久久久久 | 成人毛片免费 | 曰韩黄色片 | 国产日本在线播放 | 黄色网络免费看 | 天堂在线中文资源 | 久久精品免费网站 | 99欧美精品| 国产91一区| 一边吃奶一边摸下娇喘 | 国产免费观看一区二区三区 | 欧美成人一区二区三区电影 | 欧美大逼网 | 久久精品一区二区三区国产主播 | 天天躁狠狠躁夜躁2020挡不住 | 精品国产一区二区三区在线 | 久久精品com| www嫩草| 草久免费 | 久久精品电影网 |