码迷,mamicode.com
首页 > Web开发 > 详细

asp.net性能优化之使用Redis缓存(入门)

时间:2017-08-17 14:35:48      阅读:256      评论:0      收藏:0      [点我收藏+]

标签: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缓存(入门)

标签:4.6   实时   str   场景   dism   sed   插入   git   red   

原文地址:http://www.cnblogs.com/zxtceq/p/7380774.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!