Redis之1——Redis简介

目录

1 为什么要有Reids?

2 什么是NoSql

3 以电商场景为例的海量用户、高并发的解决方案

4 Redis的概念

5 redis的应用场景


1 为什么要有Reids?

在一些网站中,会在特定的时候出现两种情况,海量用户和高并发,比如京东的618,年底的12306,12306崩溃的现象相信在坐的各位都见过。那么,在海量用户和高并发的情况下,为什么会造成各大网站的崩溃呢。

罪魁祸首就是关系型数据库,我们知道CPU是和高速缓存进行数据交换的,高速缓存是和内存进行数据交换的,而内存的数据交换是和磁盘进行的。我们知道,关系型数据库例如MySQL,它的信息都是存放在硬盘上的,在用户进行访问操作的时候,需要将数据从硬盘中一层一层的往上传递,因此在海量用户和高并发的情况下,性能低下,造成崩溃。

下面列出了关系型数据库的几个瓶颈:

  • 性能瓶颈:磁盘IO性能低下
  • 扩展瓶颈:数据关系复杂,扩展性能差,不便于大规模集群

根据关系型数据的几个瓶颈,那么海量用户和高并发情况下,为了防止崩溃的一个解决思路就是:

  • 降低磁盘IO次数,越低越好:采用内存存储
  • 去除数据间的关系,越简单越好:不存关系,只存数据

这样的一种解决思路,其实就是NoSql。

2 什么是NoSql

NoSQL(Not Only SQL),字面意思为不仅仅是SQL,它泛指非关系型数据库,作为关系型数据库的补充。

注意:NoSQL这是关系型数据库的一种补充,真正的数据还是存放于关系型数据库中,存放于磁盘中。即NoSQl中的数据来源与关系型数据库。

NoSql的作用是应对基于海量用户和海量数据前提下的数据处理问题。有可伸缩、扩容,大数据量下的高性能,灵活的数据模型等特征。

常见的NoSql数据库有以下几种:

  • Redis
  • memcache
  • HBase
  • MongoDB

3 以电商场景为例的海量用户、高并发的解决方案

在上图中,热点信息是来源于前面的四种信息的,从模型中我们可以看出,电商会根据数据的特征将其存放在不同的地方,然后对外提供服务,图中很清晰的阐述了一点:NoSQL是关系型数据库的补充。

上图可以让大家了解到在编程中到底NoSQl是处于一个什么样的位置。

4 Redis的概念

Redis(REmote Dictionary Server)是一个用c语言开发的开源的、高性能键值对(key-value)数据库。

我再通俗的理解以下,首先它是一个数据库,数据库里面的信息不像我们MySQL那样有表,表里面才是一条一条的数据。

redis里面存放的直接是一条一条的数据,并且数据的格式都是键值对形式的,即age : 15,    name :‘zhangsan’这样的形式。

redis的特征如下:

由于采用了键值对的形式,因此redis数据库中的数据没有必然的关联关系,同时由于redis内部采用单线程机制进行工作,安全性能有了保证。在官方的测试数据中,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s,性能非常优越。

同时redis支持多种数据类型:包括string、list、hash、set、sorted_set等。注意这些类型说的都是value的类型,因为键的类型都是string类型的。

最后redis还支持持久化。

5 redis的应用场景

  • 热点数据的加速查询(主要场景),如商品推荐、热点新闻等
  • 任务对列,秒杀、抢购等
  • 即时信息查询,排位榜,网站访问统计等
  • 时效性信息,验证码控制,投票等
  • 分布式数据共享,如分布式集群架构中的session分离、
  • 消息对列
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章