亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

深入了解Redis的性能

2020-10-28 21:40:37
字體:
來源:轉載
供稿:網友

簡介

多少次你發現自己在幾個月的開發和無數的努力后陷入了毫無性能而言的web應用?多少次你在好奇如果你無法向普通用戶傳達快與最快的標準,你的客戶還應該把你當作專家?多少你聽到有關Google和Facebook一些糟糕的對比?讓我告訴你,我的客戶是怎么看待這些的:

我曾開發一個有著復雜處理和過濾的web應用,因為很多業務規則和UI要求。再加上一些過時技術的第三方提供者,對于他們而言,速度意味著15年的工作丟進垃圾桶,然后重新開始。我的應用不是那么快,有時處理一個請求花費6~8s才會處理完,業務規則的驗證、過濾和格式化響應。而客戶不接受這樣。并說如果Google做就會做好。同樣,Facebook也行。我無法向客戶解釋速度后面的硬件是多么的龐大,服務器的壓力怎樣。我僅僅回復說可以做更好,我在記住Redis后保證可以做到。


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

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

在NoSql的世界里,概念和所有流行的數據庫基本是一樣的?;旧纤谴嬖谀銠C器上某處的JSon文檔或者你可以操作的某種.NET客戶機或驅動。NoSql的偉大之處在于它解決了關系型數據庫與OO語言如C#或Java時的一個主要缺點:錯配阻抗。


Redis其實和任何的NoSql數據庫一樣。但是它是一個內存數據庫而表現十分出色。

簡單的說,Redis可以給你難以置信的存取你的對象狀態的能力從而使你的應用更加快速。有時候,你的應用速度可以優化8到10倍。這并不是開玩笑的而且你不需要背后有Google或Facebook那樣的基礎設施。如果你想知道更多的關于Redis背后的思想和它的歷史的內容,可以上網查找更多。有很多文章是關于這些的。

Redis代表了遠程字典服務( Remote Dictionary Service) 。它是一個鍵值存儲就像C#的字典對象。所以讓我們看看如何使用:


首先,按照下面的步驟安裝并運行Redis:

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

因為Redis是一個字典,可以以如下方式保存鍵值:
 

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

在這個示例中的值是一個json對象。這意味著你可以向Redis中添加復雜的對象。但沒必要這么做,因為Redis支持5種數據類型以滿足你的需求。

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

復制代碼 代碼如下:
Set schedule:id 1

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

幕后

到目前為止我們所做的一切都打破了常規。但在幕后卻是Redis客戶端通過Redis協議向服務器發送指令。服務器對內存中的數據執行這些指令,并返回響應結果。
做為服務的Redis

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


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

現在你正在或已經保持更新了。然后運行apt-get install build-essential為你的linux服務器安裝所有缺失的工具。哦了。另外對于這些設置還有很多更詳細的博文。我不得不承認,因為我對linux世界不太熟悉,所以在配置的時候著實費了翻手腳。

在 Visual Studio 中使用

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

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

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

哪怕你緩存了很多對象這也是一個非??焖俚牟僮?。在Redis中緩存即用的對象是很好的想法,這免去了可能的業務處理操作(應用規則或其他過濾和格式化操作).

數據庫中重復提取的對象(很多時候是相同的)最好放到Redis中。通常我們要在倉庫中緩存的數據(更多細節請瀏覽緩存倉庫模式cached repository pattern)也最好放到Redis中。這樣你就可以快速取得操作結果,大幅提升Web應用的整體性能。


注意scheduleClient將會暴露很多有關增加、添加、移除和使用列表、哈希等的函數。嘗試下探索更多。。。

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

在完整的反HelloWorld應用風格(我承認我是其中之一?。┑挠率颗d奮的跳向天空之前,我還應該提醒一件事:從你的控制器連到你的數據庫(就是Redis?。┎皇莻€好主意,如果這對你來說很奇怪,我認為你需要讀一些關于設計和架構方面的東西。我不理解Microsoft的指導書讓用戶添加一個MVC項目,你就可以開始構建一耳光偉大的商業web應用了。因為不是這樣。


然而,下面是一個添加對象的例子,在這個情況下式一個調度器:

 

//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<Schedule>();  var schedule= new Schedule  {    Id= scheduleClient.GetNextSequence(),    Origin ="Montreal",    Destination = "Quebec" }  var schedules = scheduleClient.Store(schedule); }

因為Redis是一個緩存服務,是可以通過設置一個超時時間讓輸入過期。你也可以通過移除那個超時來逆向這個過程。

這僅是一個關于Redis的簡介,給你提供一個提高web引用性能的方法啟示。在某些情況下,Redis可能會給你一些你的客戶或者老板沒有給你的,關于構建可靠軟件的激情的認可。

希望這能幫到一些人!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品美女久久久| 国内精品美女av在线播放| 俺也去精品视频在线观看| 国产精品一二三在线| 亚洲国产中文字幕久久网| 中文字幕久热精品视频在线| 国产日韩在线观看av| 久久精品电影一区二区| 亚洲激情视频在线观看| 91亚洲精品久久久久久久久久久久| 亚洲色图欧美制服丝袜另类第一页| 成人亚洲综合色就1024| 精品女厕一区二区三区| 亚洲天堂网站在线观看视频| 欧美在线视频一区二区| 国产成+人+综合+亚洲欧美丁香花| 国产精品www色诱视频| www.亚洲男人天堂| 亚洲欧洲免费视频| 日韩精品免费视频| 亚洲人成电影在线观看天堂色| 国内精品久久久久久中文字幕| 久久精品最新地址| 成人精品在线视频| 91系列在线观看| 国产精品美腿一区在线看| 91色琪琪电影亚洲精品久久| 国产精品成人一区二区| 在线精品国产欧美| 日韩av高清不卡| 色先锋资源久久综合5566| 97视频国产在线| 亚洲a一级视频| 尤物九九久久国产精品的特点| 欧美午夜丰满在线18影院| 91伊人影院在线播放| 国产精品视频色| 91av视频在线免费观看| 久久人人爽人人爽人人片亚洲| 久久视频这里只有精品| 国产丝袜精品视频| 亚洲欧美日韩国产中文专区| 欧美大肥婆大肥bbbbb| 欧美激情第99页| 亚洲aa在线观看| 亚洲欧洲午夜一线一品| 国产精品一区二区三| 国产成人综合av| 日韩精品极品视频| 欧美大人香蕉在线| 久久综合免费视频影院| 国内精品久久影院| 国产精品久久久久久久久久久新郎| 精品亚洲va在线va天堂资源站| 性金发美女69hd大尺寸| 一区二区三区精品99久久| 91精品国产91久久久| 97色伦亚洲国产| 懂色av影视一区二区三区| 欧美成人久久久| 亚洲欧美精品中文字幕在线| 欧美色另类天堂2015| 亚洲精品美女网站| 国产精品永久免费视频| 日本不卡视频在线播放| 九九九久久国产免费| 亚洲欧美精品在线| 亚洲精品永久免费| 亚洲第一色中文字幕| 精品小视频在线| 中文字幕国产亚洲| 精品一区精品二区| 欧美精品免费播放| 国产亚洲欧洲在线| 国色天香2019中文字幕在线观看| 91欧美精品成人综合在线观看| 日韩欧美在线观看视频| 亚洲国产精品久久久久| 国产精品久久久久99| 欧美在线www| 中文字幕av一区| 国产91亚洲精品| 精品日本高清在线播放| 最近中文字幕2019免费| 欧美视频二区36p| 国产男人精品视频| 成人精品aaaa网站| 国产成+人+综合+亚洲欧美丁香花| 福利微拍一区二区| 亚洲成人久久网| 国产精品久久久久久久9999| 一区二区欧美在线| 成人国产精品久久久| 欧美成人激情在线| 国产日韩欧美影视| 国产精品亚洲网站| 欧美老少配视频| 激情成人在线视频| 国产精品一区二区性色av| 欧美洲成人男女午夜视频| 欧美黄色片视频| 国产精品69久久| 国产精品福利无圣光在线一区| 亚洲精品自拍视频| 91久久久国产精品| 欧美激情在线一区| 日韩高清av在线| 欧美日韩国产va另类| 久久影视电视剧凤归四时歌| 欧美成年人在线观看| 国产一区二区三区四区福利| 精品动漫一区二区三区| 亚洲成人av在线| 国产日韩欧美夫妻视频在线观看| 欧美亚洲一级片| 亚洲区在线播放| 91精品久久久久久久| 久久夜色精品国产| 日韩在线观看电影| 欧美性在线观看| 中文字幕日韩免费视频| 国产精品91在线| 欧美日韩在线免费| 亚洲欧美三级在线| 成人精品一区二区三区| 久久精品国产综合| 成人免费淫片aa视频免费| 深夜成人在线观看| 最近中文字幕mv在线一区二区三区四区| 成人妇女淫片aaaa视频| 欧美大片第1页| 欧美激情一二三| 91精品久久久久久综合乱菊| 欧美最顶级的aⅴ艳星| 日本高清视频一区| 欧美黑人一级爽快片淫片高清| 日韩中文字幕视频| 欧美区在线播放| 亚洲第一在线视频| 最新91在线视频| 亚洲午夜精品视频| 午夜伦理精品一区| 国产一区二区三区在线观看网站| 国内精品久久久久影院优| 成人免费观看49www在线观看| 日韩av片电影专区| 成人亚洲欧美一区二区三区| 欧美亚洲在线观看| 亚洲色图第三页| 俺去啦;欧美日韩| 欧美国产第二页| 国内精品一区二区三区| 欧洲成人在线观看| 国产精品国产亚洲伊人久久| 欧美亚洲成人免费| 欧美成人午夜免费视在线看片| 国产精品久久久久久久久久久久久| 亚洲综合精品伊人久久| 这里只有精品视频在线| 日本19禁啪啪免费观看www| 欧美视频在线视频| 精品国产拍在线观看| 68精品国产免费久久久久久婷婷| 成人免费视频网址|