zoukankan      html  css  js  c++  java
  • Redis的应用场景

    最近做了个小项目是WebForm 做着做着发现前台的首页读取速度很慢,并且多个用户同时访问我的Sqlserver承受不住!之后就想到了Redis

    代码如下:

    /// <summary>
            /// 缓冲技术 突破数据库速度
            /// </summary>
            protected void Page_Load(object sender, EventArgs e)
            {
                //Radis缓冲处理
                var ser = new ObjectSerializer();
                RedisClient redis = new RedisClient("127.0.0.1", 6379);
                if (ser.Deserialize(redis.Get<byte[]>("Banner")) == null)//证明过期
                {
                    redis.Set<byte[]>("ShowNewPhone", ser.Serialize(GoodsManager.GetNewPhone()), DateTime.Now.AddMinutes(1));
                    rpt_ShowNewPhone.DataSource = ser.Deserialize(redis.Get<byte[]>("ShowNewPhone")) as List<Goods>;
                    rpt_ShowNewPhone.DataBind();
                    redis.Set<byte[]>("T1", ser.Serialize(AdvertManager.GetList("1")), DateTime.Now.AddMinutes(1));
                    advert_01.DataSource = ser.Deserialize(redis.Get<byte[]>("T1")) as List<Advert>;
                    advert_01.DataBind();
                    redis.Set<byte[]>("T2", ser.Serialize(AdvertManager.GetList("2")), DateTime.Now.AddMinutes(1));
                    friend.DataSource = ser.Deserialize(redis.Get<byte[]>("T2")) as List<Advert>;
                    friend.DataBind();
                    redis.Set<byte[]>("video", ser.Serialize(VideoTalManager.GetList()), DateTime.Now.AddMinutes(1));
                    dongtai.DataSource = ser.Deserialize(redis.Get<byte[]>("video")) as List<VideoTal>;
                    dongtai.DataBind();
                    redis.Set<byte[]>("BannerList", ser.Serialize(BannerManager.GetList()), DateTime.Now.AddMinutes(1));
                    banner_rpt.DataSource = ser.Deserialize(redis.Get<byte[]>("BannerList")) as List<Banner>;
                    banner_rpt.DataBind();
                }
                else
                {
                    rpt_ShowNewPhone.DataSource = ser.Deserialize(redis.Get<byte[]>("ShowNewPhone")) as List<Goods>;
                    rpt_ShowNewPhone.DataBind();
                    advert_01.DataSource = ser.Deserialize(redis.Get<byte[]>("T1")) as List<Advert>;
                    advert_01.DataBind();
                    friend.DataSource = ser.Deserialize(redis.Get<byte[]>("T2")) as List<Advert>;
                    friend.DataBind();
                    dongtai.DataSource = ser.Deserialize(redis.Get<byte[]>("video")) as List<VideoTal>;
                    dongtai.DataBind();
                    banner_rpt.DataSource = ser.Deserialize(redis.Get<byte[]>("BannerList")) as List<Banner>;
                    banner_rpt.DataBind();
                }

    解读:

    •       1.设置过期时间是为了防止项目更新无效,如果不在设置过期时间,你将要在后台操作前台数据的时候更新redis数据.
    •       2.每过60秒(或者更多)就会有一个用户去DB的数据搬到Redis中给其他用户使用(每N秒有一个小白鼠)

    Redis的优点:

    • 异常快 - Redis非常快,每秒可执行大约110000次的设置(SET)操作,每秒大约可执行81000次的读取/获取(GET)操作。
    • 支持丰富的数据类型 - Redis支持开发人员常用的大多数数据类型,例如列表,集合,排序集和散列等等。这使得Redis很容易被用来解决各种问题,因为我们知道哪些问题可以更好使用地哪些数据类型来处理解决。
    • 操作具有原子性 - 所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新的值。
    • 多实用工具 - Redis是一个多实用工具,可用于多种用例,如:缓存,消息队列(Redis本地支持发布/订阅),应用程序中的任何短期数据,例如,web应用程序中的会话,网页命中计数等。
  • 相关阅读:
    Java 代码块
    Java 方法签名
    Java 中的继承
    Java 中的this关键字
    Java 静态对象 static
    Java报错 -- The public type c must be defined in its own file
    Java 构造方法
    Java 成员变量和局部变量
    Java 对象的创建和使用
    JavaScript单线程和异步机制
  • 原文地址:https://www.cnblogs.com/ZaraNet/p/9552125.html
Copyright © 2011-2022 走看看