随着时代的进步,互联网使用的人越来越多,像淘宝,天猫,京东,拼多多这样的大型网站每时每刻都会受到巨大的访问量,如何处理这些大量的访问,防止服务器不会宕机,这成为了当代程序员的使命之一,为了解决这些问题,我们引进了redis。
什么是redis
redis是一种nosql数据库,他的数据是保存在内存中,同时redis可以定时把内存数据同步到磁盘,即可以将数据持久化,并且他比memcached支持更多的数据结构(string,list列表[队列和栈],set[集合],sorted set[有序集合] hash(hash表))
为什么要使用redis
当我们做了一个项目,比方说个人博客,我们把这个项目发布到自己的服务器,一般来说,我们做的这个项目没有商用,访问量会很小,这个时候,我们不使用redis也可以,可以要访问量直接经过mysql,我们都知道,mysql是在磁盘上面,读取需要一点时间,访问量小的时候,这些时间我们可以忽略不及。
但是,当我们做了一个大型的商用项目,例如淘宝,那么访问量就会成几何数上升,特别是双十一的时候,并发量更是达到顶峰,这个时候,如果我们还是用mysql,那么大量的访问会让服务器处理速度非常的慢,甚至宕机,所以这个时候我们就要使用redis
redis是在内存上面,我们知道内存读取数据非常的快,当大量的访问量余姚访问某一个数据的时候,我们把这个数据存放在redis里面,那么这样,我们的服务器就不会宕机。
什么是redis雪崩
当大量的redis失效的时候,大量的访问直接打在我们的数据库上面,于是导致服务器访问变慢甚至宕机。
解决方法:
- 设置redis永远不会过期
- 给每个redis设置随机的过期时间
什么是redis击穿
当出现一个热点数据,譬如说当年鹿晗和关晓彤谈恋爱的时候,这个就是一个热点数据,当有大量的访问同时访问一个数据,然后这个热点数据在某个时进段过期了,那么大量的请求就会打在我们的数据库上面,便会造成服务器的宕机。
解决方法:
- 当redis热点数据失效时,我们把全部的访问量锁住,只通过一个访问,让他去数据库查询,查询到数据之后,redis上便会存在所需要的数据,然后这个时候在放行全部的请求,这样全部的请求就打在redis上面,不会打到我们的数据库了。
什么是redis击穿
当我们访问是需要携带参数的,比方说携带id=1这样的参数,访问后就在内存里面存下查询到的数据,但是有些人会发起一些恶意请求,比方说id=-1000,id=sadasdsa这样的,那么这些是不存在的,当这样的请求一旦多了起来,那么数据库就很有可能被打爆。
解决方案
- 有很多种方法可以有效地解决缓存穿透问题,最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。
- 另外也有一个更为简单粗暴的方法,如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。
安装redis
前面给大家介绍了一下redis,那么需要怎么使用呢?那么我们先安装一下redis。
所需条件
- 一个云服务器,阿里云,腾讯云都可以,我们这里是使用的是阿里云
- Xshell和Xftp
- redis安装包,没有的话下面会教你怎么下载
获取安装包
进入redis官网
redis官网
我们把下载好的redis压缩包,通过xftp传送到服务器的/opt文件夹下面
通过命令,进入/opt文件夹下面
cd /opt
我这里已经安装好了redis,由于我自己部署的项目使用了redis,在这里我就不删除我自己的redis了,我只会演示操作部分。
通过命令,解压redis压缩包
tar -zxvf redis-5.0.7.tar.gz(注意,这里写的是你下载的压缩包的名字)
解压完成后,会出现redis-5.0.7,进入此目录
依次输入如下命令
make
yum install gcc-c++
make install
安装完成
修改redis的配置文件
进入 /usr/local/bin的目录下,穿件一个属于自己的环境文件夹
重返回/redis