Redis在项目中的使用及性能测试
强烈推荐一个大神的人工智能的教程:http://www.captainbed.net/zhanghan
【前言】
在上篇博文中为大家分享了《SCPPO:C#中Redis封装的类》,有了这个基础后接下来为大家分享下,在我们的项目中我是如何利用Redis来提高性能的滴!
【实现过程及性能对比】
一.现状:项目中有个功能—点击时加载树中数据,特别慢,有待优化!
二.权衡:用过缓存的朋友都知道数据库的数据与缓存同步是个绕不开的问题;于是乎和组长确认下这个加载树中的数据什么时候会变,组长说了五处功能会引起该树中的数据变化;
通过《SCPPO:Redis简介》中使用缓存和不使用缓存的图对比,不难发现,缓存提高的速度是节省从硬盘到加载到内存的时候,当然这个从硬盘加载到内存过程则在数据库和缓存同步的时候执行;
考虑这块儿用不用缓存,只需明确一件事即可,访问树的功能和修改树中五个功能哪个使用的频率高,组长给出答案:访问树的功能频率远高于修改树的;于是乎确认可以用Redis来提高性能。
三.加缓存前的性能测试:
都说这个功能比较慢,但是需要进行专业的测试不能只靠直觉,于是我在局域网中通过IE浏览器中网络捕捉方法来监控实际用了多长时间:
1.前提:
(1)性能性能测试所选功能:现金流-原料产品价格加载时左侧树的数据加载:
(2)数据量(注:测试机器为115—测试服务器)事业部—3784条、企业—4838条
(3)由于这次是做测试,为了保障环境一样,这次对比均在本机起代码,测试变化条件是加缓存与不加缓存的区别!
2.测试过程:
(1)用IE网络监测方法说明:
(2)抓捕的结果中方法分析(总部和事业部一样)—未使用缓存时运行消耗时间(多次测试求平均值):事业部:1.57s 企业:4.40s
四.加缓存过程:
1.点击原料产品价格,树数据加载时,未加入缓存前的写法:
2.点击原料产品价格,树数据加载时,加入缓存前的写法(在此只写总部的加入方法,企业部类似不再赘述):
3.步骤2中调用从数据库同步到Redis方法:
五.加缓存后的性能测试:
和未加缓存之前一样(数据量等其他环境都一致)进行抓捕方法查看监控到的时间(多次测试做平均值),效果如下图,总部:0.67s企业:0.51s
六.将使用缓存和不使用缓存放在一块儿做对比:
(1)将数据放到redis中:总部—1.21s企业:3.92s
(2)将数据从redis中读出:总部-0.50s企业:0.57s
七.Redis使用时注意事项:
(1)若未从缓存中读到数据,或从缓存中读取失败后要从数据库中读取数据并将数据同步到缓存中:
(2)客户端资源有限,在每次创建完Redis客户端使用完后立即释放:
(3)在将数据库数据同步到缓存时先在缓存中移除该key值:
(4)Redis是Key/Value类型数据库,key值是唯一标识,为了防止Key值设置冲突,我创建一个Key值记录表(Redis-Key值记录表);在添加新的Key值时先检索表中无该Key值才能添加并更新该表;
【总结】
1、由于功能还没做完善(少其他功能对数据修改后将数据库数据与Redis中同步)目前做的测试是本机,连接数据库为测试服务器,数据量较少,不过已经看出使用缓存后性能提升;
2、根据Redis的原理可以知道,当数据量越大时相对来说它的效果越明显,在下篇博文《SCPPO:Redis在项目中的使用及性能测试(续)》中,小编将继续为大家分享完善同步功能以及将程序发布到测试和正式服务器上性能的对比,敬请期待。
3、Redis应用场景:
(1)不经常变动,读多写少的功能(原因:redis和数据库中数据同步也需要消耗时间);
(2)数据量大,访问比较频繁的功能。
Redis在项目中的使用及性能测试相关推荐
- Redis在项目中的使用及性能测试(续)
[前言] 在上篇博文<SCPPO:Redis在项目中的使用及性能测试>中小编为大家分享了在程序中引入Redis以及性能的提升,不过遗留了功能的完善以及性能在服务器上的测试,咱们就一鼓作气, ...
- (五)Redis在项目中应用
目录 1. redis实现分布式锁 2. 订单或任务缓存 3. Redis和DB数据一致性 4. 大并发Redis穿透直接访问DB 5. 接口限流器 参考: Redis在项目中的运用总结 1. red ...
- Redis在项目中的地位及使用场景剖析
Redis在项目中的地位及使用场景剖析 一. redis 特点 所有数据存储在内存中,高速读写 提供丰富多样的数据类型:string. hash. set. sorted set.bitmap.hyp ...
- 8.redis解决分布式session问题 、redis在项目中难点
a.什么是session session是一种会话技术,我们知道http是无状态协议的,就是这次连接传输数据后,下次连接服务器是不知道这次的请求是谁的,因此我们要做一个标记,让服务器知道每次请求是哪个 ...
- Redis在项目中合理使用经验总结
背景 Redis 是一个开源的内存数据结构存储系统. 可以作为数据库.缓存和消息中间件使用. 支持多种类型的数据结构. Redis 内置了 复制(replication),LUA脚本(Lua scri ...
- Redis 在项目中合理使用经验总结
背景 Redis 是一个开源的内存数据结构存储系统. 可以作为数据库.缓存和消息中间件使用. 支持多种类型的数据结构. Redis 内置了 复制(replication),LUA脚本(Lua scri ...
- 【精品】Redis在项目中的应用场景
Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合). String 缓存 简单key-value存储 热 ...
- Redis在项目中的应用(点评)
一.缓存更新策略 主动更新策略 先删除缓存时,由于更新数据库耗时较多,在此期间如有另一线程查询缓存/数据库并写入缓存,则当前线程更新数据库后会导致缓存和数据库数据不一致,而反之出现不一致的概率要小得 ...
- Redis在SSM项目中的简单使用
Redis在SSM项目中的简单使用 一.基于SSM的Redis环境配置 前提是你的开发电脑安装和配置好了redis,如果没安装请看Window配置Redis环境和简单使用 1.1.pom文件中引入re ...
最新文章
- mysql提示performance_schema缺表
- 为什么 Django 能持续统治 Python 开发世界
- 星光 SaaS 伙伴甄云科技:如何构建更适合快成长企业的数字化采购管理平台?
- linux在cd后直接显示文件格式,Linux命令学习笔记之一目录与文件基本操作
- 2020年的海报设计,掌握7种风格,稳了
- P4859 已经没有什么好害怕的了
- 创业者总认为自己能力很强,但能力之上是认知力
- jquery广告轮播插件
- JavaWeb02-HTML篇笔记(一)
- kb2919355无法安装
- 三次参数样条曲线拟合(任意控制点)
- 好用的pdf阅读器(便携)
- 移动接入的身份认证技术
- Flutter图片加载数据
- 猜数字游戏,用户充值版(Java)
- Android 获取微信ua,微信小程序实现获取用户高清头像
- “以卡养卡”是个技术活,一般人玩不了,不一般的人玩的溜
- 织梦CMS的管理员密码加密方式
- 【磁盘调度算法】磁盘调度模拟的设计与分析
- 深入理解计算机系统笔记_程序的机器级表示_3.9异质的数据结构
热门文章
- 不要在爬虫犯罪的边缘疯狂试探!
- 分析了 Stack Overflow、Reddit 等 9 个榜单,Python 第一的地位稳了!
- mysql php错误处理函数_PHP 错误处理
- 字节跳动算法工程师总结:单片机用java语言编程
- 想拿高工资?那些年Java面试官常问的知识点项目实战
- Chrome格式化json
- CIF进口货物流程图_FOB、CIF和CFR,你真的了解吗?
- python变量和数据类型_Python变量和数据类型简介
- php ftp 账号密码修改,月光软件站 - 编程文档 - 其他语言 - 用PHP即时添加,删除FTP帐号和更改FTP密码的函数...
- jquert ajax文件 mvc,jquery ajax file upload NET MVC 无刷新文件上传