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", );
if (ser.Deserialize(redis.Get<byte[]>("Banner")) == null)//证明过期
{
redis.Set<byte[]>("ShowNewPhone", ser.Serialize(GoodsManager.GetNewPhone()), DateTime.Now.AddMinutes());
rpt_ShowNewPhone.DataSource = ser.Deserialize(redis.Get<byte[]>("ShowNewPhone")) as List<Goods>;
rpt_ShowNewPhone.DataBind();
redis.Set<byte[]>("T1", ser.Serialize(AdvertManager.GetList("")), DateTime.Now.AddMinutes());
advert_01.DataSource = ser.Deserialize(redis.Get<byte[]>("T1")) as List<Advert>;
advert_01.DataBind();
redis.Set<byte[]>("T2", ser.Serialize(AdvertManager.GetList("")), DateTime.Now.AddMinutes());
friend.DataSource = ser.Deserialize(redis.Get<byte[]>("T2")) as List<Advert>;
friend.DataBind();
redis.Set<byte[]>("video", ser.Serialize(VideoTalManager.GetList()), DateTime.Now.AddMinutes());
dongtai.DataSource = ser.Deserialize(redis.Get<byte[]>("video")) as List<VideoTal>;
dongtai.DataBind();
redis.Set<byte[]>("BannerList", ser.Serialize(BannerManager.GetList()), DateTime.Now.AddMinutes());
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应用程序中的会话,网页命中计数等。
Redis的应用场景的更多相关文章
- redis系列-redis的使用场景
redis越来越受大家欢迎,提升下速度,做下缓存,完成KPI之利器呀.翻译一篇文章<<How to take advantage of Redis just adding it to yo ...
- Redis 数据结构使用场景
转自http://get.ftqq.com/523.get 一.redis 数据结构使用场景 原来看过 redisbook 这本书,对 redis 的基本功能都已经熟悉了,从上周开始看 redis 的 ...
- redis的适应场景
redis应用场景: 1.对数据高并发读写 2.对海量数据的高效存储和访问 3.对数据的高可扩展性和高可用性 做分布式扩展很简单,因为没有固定的表结构 redis介绍: redis是一个key-val ...
- Lua脚本在redis分布式锁场景的运用
目录 锁和分布式锁 锁是什么? 为什么需要锁? Java中的锁 分布式锁 redis 如何实现加锁 锁超时 retry redis 如何释放锁 不该释放的锁 通过Lua脚本实现锁释放 用redis做分 ...
- redis的使用场景和基本数据类型
一:redis使用的场景 redis是一个高性能的NoSQL数据库,特点是高性能,持久存储,适应高并发的应用场景. 下面看看它的使用场景1.取最新N个数据的操作比如取网站的最新文章,通过下面方式,我们 ...
- redis作为缓存场景使用,内存耗尽时,突然出现大量的逐出,在这个逐出的过程中阻塞正常的读写请求,导致 redis 短时间不可用
redis 突然大量逐出导致读写请求block 内容目录: 现象 背景 原因 解决方案 ref 现象 redis作为缓存场景使用,内存耗尽时,突然出现大量的逐出,在这个逐出的过程中阻塞正常的读写请 ...
- redis 发展史 应用场景
引言 在Web应用发展的初期,那时关系型数据库受到了较为广泛的关注和应用, 原因是因为那时候Web站点基本上访问和并发不高.交互也较少. 而在后来,随着访问量的提升,使用关系型数据库的Web站点多多少 ...
- redis的使用场景和优缺点
使用场景和优缺点: 2 Redis用来做什么? 通常局限点来说,Redis也以消息队列的形式存在,作为内嵌的List存在,满足实时的高并发需求.而通常在一个电商类型的数据处理过程之中,有关商品,热销, ...
- Redis的使用场景 by 杨卫华
转载自新浪微博架构师杨卫华的博客 http://timyang.net/tag/redis/,省略了部分内容 按:杨卫华在2010年就已经测试了Redis的性能,并给出了初步的结论:“Redis性能惊 ...
- Redis数据类型使用场景及有序集合SortedSet底层实现详解
Redis常用数据类型有字符串String.字典dict.列表List.集合Set.有序集合SortedSet,本文将简单介绍各数据类型及其使用场景,并重点剖析有序集合SortedSet的实现. Li ...
随机推荐
- 2018-2019-2 20165239 《网络对抗技术》Kali的安装 第一周
2018-2019-<网络对抗技术> Kali安装 20165239其米仁增 一.资源下载以及工具安装 1.下载虚拟机工具VMware. 下载链接 :https://www.baidu.c ...
- .net core 摸索之路
1:先安装vs core 下载地址:http://cdn7.mydown.com/5cc50443/fbaddadae50d260bcac7401e87e9e2c9/newsoft/VSCode_ ...
- hive的概述和数据类型
一.Hive概述 1.Hive简介 Hive数据仓库软件有助于使用SQL读取.编写和管理驻留在分布式存储中的大型数据集.提供了命令行工具和JDBC驱动程序以将用户连接到Hive. Hive可以将SQL ...
- 简繁体转化处理 opencc 安装【centos 7】
代码 #准备工作 yum install cmake yum install git #下载代码 git clone https://github.com/BYVoid/OpenCC #安装文档生成 ...
- 最简单的原生js和jquery插件封装
最近在开发过程中用别人的插件有问题,所以研究了一下,怎么封装自己的插件. 如果是制作jquery插件的话.就将下面的extend方法换成 $.extend 方法,其他都一样. 总结一下实现原理: 将 ...
- js的算法题
1.统计一个字符串中出现最多的字母 给出一个字符串,统计出现次数最多的字母.如:“wqeqwhixswiqhdxsq”,其中出现最多的是q. js算法的实现 function findMax(str) ...
- ios日期显示NaN
ios中js通过getMonth()获取到的日期显示NaN,而在其他地方如pc.安卓都是ok的,这是为什么呢,原来这里有个ios的兼容问题,需要将日期中的“-”替换为“/” var time = ne ...
- eclipse上的maven,添加依赖后无法自动下载相应的jar包
报错信息: Failed to read artifact descriptor for org.quartz-scheduler:quartz-jobs:jar:2.2.3 org.eclipse ...
- MyEclipse 10 报错记录
1. js文件:右键 >> MyEclipse >> Exclude From Validation 2. Servlet 警告:Window ==> Preferenc ...
- 一个自己研究出来的字符串匹配算法-k子串算法
前言 最近工作中需要写一个算法,而写完这个算法我却发现了一个很有意思的事情.需要的这个算法是这样的:对于A,B两个字符串,找出最多K个公共子串,使得这K个子串长度和最大.百度之没有这样的算法,然后就开 ...