1.了解Redis与其应用场景(理解)
问题的出现:
-
常见现象:春运时12306网页崩溃,双十一淘宝和京东连连卡顿…
-
分析原因特征:大量用户同时访问同一数据,即海量数据和高并发。
-
根本原因:关系型数据库
-
性能瓶颈:磁盘IO性能低下。数据交换:CPU—>cache—>内存—>硬盘,数据一层层传递导致性能低下。
-
扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群。在关系型数据库中,常常一张表需要关联多张表,错综复杂的关系使得数据牵一发而动全身,导致数据不便于扩展。
-
-
解决思路:
- 降低磁盘IO次数,越低越好——将数据存储在内存
- 去除数据间关系,越简单越好——不存储数据关系,仅存储数据
也就是,Nosql。
NoSql:
-
NoSql:即Not-Only SQL(泛指非关系型数据库),作为关系型数据库的补充。
-
作用:应对基于海量用户和海量数据前提下的数据处理问题。
-
特征(相比较于关系型数据库):
- 可扩容,可伸缩
- 大数据量下高性能
- 灵活的数据模型
- 高可用
-
常见的NoSql模型:Redis、memcache、HBase、MongoDB
-
应用场景:数据库存储固定的基本数据,其余类型的数据根据其特征存放在不同的地方,一起对外提供服务。
Redis
- 概念:Redis(Remote Dictionary Server),即远程字典服务,是用C语言开发的一个开源的高性能键值对(key-value)数据库。
- 特征:
- 数据间没有必然的联系
- 内部采用单线程机制进行工作
- 高性能。官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s。
- 多数据类型支持:字符串(String)、列表(list)、散列(hash)、集合(set)、有序集合(sorted_set)。
- 持久化支持。Redis可以进行灾难性恢复,比如突然断电的情况。通过将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用来保证数据的可恢复。
- 应用场景:
- 为热点数据加速查询(主要应用场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等。
- 任务队列,如秒杀、抢购、购票排队等。
- 即时信息查询,如各位排行榜、各类网站访问统计、公交到站信息、在线人数等。
- 时效性信息控制,如验证码控制(比如验证码五分钟之内有效)、投票控制等。
- 分布式数据共享,如分布式集群架构中的session分离。
- 消息队列。
- 分布式锁。