此文仅入门,须要扩展挖深,自行钻研html
缓存-redismysql
数据库-mysqlredis
1. 缓存
什么是缓存?
定义 缓存是系统快速响应的一种关键性技术,是一组被保存起来以备未来使用的东西,介于应用开发和系统开发之间,是产品经理们常常顾及不到的地方,也是技术架构设计的非功能性约束。sql
分类数据库
按软件系统所处的位置不一样分类segmentfault
- 客户端缓存
- 服务端缓存
- 网络中的缓存
按规模和部署方式分类:api
- 单体缓存
- 缓存集群
- 分布式缓存
为何要用缓存?
为何要用缓存,咱们这里仅从软件开发层面来分析,首先你必须了解关于系统的性能的一些指标。浏览器
系统的性能的指标通常包括:缓存
- 响应时间:系统对用户的请求做出的响应时间,它完整的记录了整个系统处理请求的时间。
- 延迟时间:通常指系统处理完请求后,因为网络传输到用户之间的网络延迟时间。
- 吞吐量:指单位时间内系统处理请求的数量。无并发的系统中,它与响应时间成反比。
- 并发用户数:指系统可以同时承载的正常使用系统功能的用户数量,它比 吞吐量更能直观的反应系统的性能
- 资源利用率:反映的是一段时间内资源平均被占用的状况
系统的性能,反映在从浏览器到网络,再到服务器,甚至数据库等各个应用层面。而在各个层面使用缓存将大大提高整个系统的性能。性能优化
- 缓存离客户端越近,响应时间则越快;缓存离数据库越近,则响应时间越长。
- 缓存是一种用空间换时间的概念。
- 若是带宽收费(流量付费),那么缓存就是变相的省钱利器。
- 并发要求较高的功能,那么缓存的主要功能就体现的十分精准了。
-
- 对内,减轻数据库资源服务器的压力
-
- 对外,提供系统的响应时间,可以容许更高的并发量,保证系统的正常运行。
- 发展到今天,缓存已经不只仅限于这些功能。因为篇幅有限,仅仅做介绍,方便咱们开发作参考:
-
- 业务功能解耦:
-
- 分布式锁的使用、秒杀、队列服务
-
- 定时任务的使用
-
- 消息服务
缓存怎么用?
那么缓存怎么用呢,那些数据适合用于缓存呢?这里仅仅以redis这种缓存数据库为例,简单的讲一讲服务端的缓存使用。
-
关于redis 的基本使用,在Spring中如何调用api等基础性功能,自行百度(PS:烂大街了)
-
redis 属于应用级别的缓存,区别与项目中的运行内存,用于弥补应用内存不足或者服务器硬件条件有限的状况;固然也是为了防止高并发来保证系统稳定性。
-
redis 支持的数据格式可以知足业务开发中的99%以上的格式,而且支持分布式,开源,社区比较活跃,因此是首选的技术
-
redis支持知足各类条件的容错策略,这个须要本身了解
-
redis分布式支持拓扑和哨兵机制两种分布式策略知足扩展和稳定性
-
redis 支持本地化存储操做,并提供了2种方式来本地化
-
redis 不只仅如此,还有不少高级功能:消息队列,机器学习,布隆过滤,bit存储等 你们有时间,能够去了解一下。这些东西都是能够百度到的。
适合缓存的使用场景
- 读密集的业务数据
- 有大量的热数据
- 对响应时效要求高的
- 对一致性要求不是很严格的
- 须要分布式锁的
不适合的场景
- 读少的
- 更新频繁的
- 一致性要求严格的
2. 数据库
什么是mysql数据库?
什么是mysql,你们平时都用,可是让你表达一下,啥是mysql?是否内心能表达清楚呢?闭上眼睛,自问一下。 wiki 上是这么介绍的
MySQL is an open-source relational database management system (RDBMS). Its name is a combination of "My", the name of co-founder Michael Widenius's daughter,[7] and "SQL", the abbreviation for Structured Query Language. MySQL is free and open-source software under the terms of the GNU General Public License, and is also available under a variety of proprietary licenses. MySQL was owned and sponsored by the Swedish company MySQL AB, which was bought by Sun Microsystems (now Oracle Corporation).[8] In 2010, when Oracle acquired Sun, Widenius forked the open-source MySQL project to create MariaDB.
- 自行百度翻译
若是你以为你了解什么是mysql,那么这里我罗列一些问题,若是你能都知道,那么你就真的了解mysql了,若是不清楚,也不要紧,百度了解一下,mysql的知识真的不要太多。
- 咱们平时说的mysql,是数据库仍是mysql实例,它们的关系和区别是什么?
- 你知道mysql的数据存储文件是什么格式的吗?这种格式有啥意义呢
- mysql为何不支持全文索引
- mysql 速度快是由于不支持事务吗?
- mysql数据量大于1000万性能会急剧降低吗?
- 你知道mysql 有多少种存储引擎?你知道公司目前用的是哪一种存储引擎,为啥选了这种,相对于其余的存储引擎,它有哪些牛逼的地方?
问题不少?不,若是你接触过mysql的体系,这些都是入门必备。若是以为你缺乏这些知识,那么不妨找本书看看,找一两篇博客,补补。
为何要用mysql?
这个应该你们都多少知道点,为啥用,由于阿里也在用啊,淘宝早期就是用mysql打天下的。那么从专业的角度考虑,为啥阿里选了mysql,而不是其余呢?
- 开源,开源,开源!
- 免费,运维免费,使用免费
- 性能极佳
- 社区支持特别好,插件式存储引擎支持
mysql怎么用?
这个怎么用,增删改查了,你们都会一点点,这里要提的是如何优化mysql。
- 所谓的优化MySQL,那必须熟悉mysql,了解存储引擎,才能谈优化。
- 优化MySQL,其实就是按照MySQL的规则来写SQL,不要瞎搞。
这里我不打算班门弄斧,如下的博客都是比较优秀的,你们一块儿来学习。