asp.net效能最佳化之使用Redis緩衝(入門)

來源:互聯網
上載者:User

標籤:4.6   即時   str   情境   dism   sed   插入   git   red   

1:使用Redis緩衝的最佳化思路

redis的使用情境很多,僅說下本人所用的一個情境:

1.1對於大量的資料讀取,為了緩解資料庫的壓力將一些不經常變化的而又讀取頻繁的資料存入redis緩衝

大致思路如下:執行一個查詢

1.2首先判斷緩衝中是否存在,如存在直接從Redis緩衝中擷取。

1.3如果Redis緩衝中不存在,即時讀取資料庫資料,同時寫入緩衝(並設定緩衝失效的時間)。

1.4缺點,如果直接修改了資料庫的資料而又沒有更新緩衝,在緩衝失效的時間內將導致讀取的Redis緩衝是錯誤的資料。

2:Redis傻瓜式安裝

2.1雙擊執行redis-2.4.6-setup-64-bit.exe程式(:https://github.com/dmajkic/redis/downloads)

2.2可以將此服務設定為windows系統服務:

2.3測試是否安裝成功:

再回到redis檔案夾下,找到redis-cli.exe檔案,它就是Redis用戶端程式。開啟,輸入:

Set test 123

即在Redis中插入了一條key為test,value為123的資料,繼續輸入:get test

得到value儲存的資料123。

如果想知道Redis中一共儲存了多少條資料,則可以使用:keys * 來查詢:

 

3:asp.net使用Redis緩衝簡單樣本

3.1測試Demo的結構

 3.2添加引用

 3.3將參數寫入設定檔

 <appSettings>    <add key="WriteServerList" value="127.0.0.1:6379" />    <add key="ReadServerList" value="127.0.0.1:6379" />    <add key="MaxWritePoolSize" value="60" />    <add key="MaxReadPoolSize" value="60" />    <add key="AutoStart" value="true" />    <add key="LocalCacheTime" value="1800" />    <add key="RecordeLog" value="false" />  </appSettings>

3.4讀取設定檔參數類

 public class RedisConfigInfo    {        public static string WriteServerList = ConfigurationManager.AppSettings["WriteServerList"];        public static string ReadServerList = ConfigurationManager.AppSettings["ReadServerList"];        public static int MaxWritePoolSize = Convert.ToInt32(ConfigurationManager.AppSettings["MaxWritePoolSize"]);        public static int MaxReadPoolSize = Convert.ToInt32(ConfigurationManager.AppSettings["MaxReadPoolSize"]);        public static int LocalCacheTime = Convert.ToInt32(ConfigurationManager.AppSettings["LocalCacheTime"]);        public static bool AutoStart = ConfigurationManager.AppSettings["AutoStart"].Equals("true") ? true : false;    }

3.5串連Redis,以及其他的一些操作類

 View Code

3.6測試頁面前後台代碼

 <form id="form1" runat="server">    <div>        <asp:Label runat="server" ID="lbtest"></asp:Label>        <asp:Button runat="server" ID ="btn1" OnClick="btn1_Click" Text="擷取測試資料"/>    </div>    </form>
 protected void btn1_Click(object sender, EventArgs e)        {            string UserName;            //讀取資料,如果緩衝存在直接從緩衝中讀取,否則從資料庫讀取然後寫入redis            using (var redisClient = RedisManager.GetClient())            {                UserName = redisClient.Get<string>("UserInfo_123");                if (string.IsNullOrEmpty(UserName)) //初始化緩衝                {                    //TODO 從資料庫中擷取資料,並寫入緩衝                    UserName = "張三";                    redisClient.Set<string>("UserInfo_123", UserName, DateTime.Now.AddSeconds(10));                    lbtest.Text = "資料庫資料:" + "張三";                    return;                }                lbtest.Text = "Redis快取資料:" + UserName;            }        }

測試結果圖

首次訪問緩衝中資料不存在,擷取資料並寫入緩衝,並設定有效期間10秒

10秒內再次訪問讀取緩衝中資料

asp.net效能最佳化之使用Redis緩衝(入門)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.