1-Redis应用场景

2018-08-15  本文已影响0人  Guoyubo

近来一直听说redis,也不清楚到底是干嘛的,解决什么问题的,一百度就直接说教你代码怎么用,前提是要知道应用场景啊!

1 为什么使用?(网上都这么说,我理解不透)

*解决数据高并发的读写问题

*解决应用服务器的cpu和内存压力

*减少io的读操作,减轻io的压力

2 我的理解

首先不管你是从别人哪里听到的redis还是你自己主动需要用redis,都说明是遇到高并发问题了,数据库查的太慢了,或者说其实数据库已经是很快了,但是你这1秒内要查个几百万次相同的数据(网速因素不考虑),数据库忙不过来了,连数据库最大连接数都不够用了,挂了。为啥这时候redis就行了呢?

因为redis是操作内存的,速度和操作磁盘的不是一个级别的。mysql是以文件的形式存储的,sql的每次检索数据和插入数据都是读写(I/O)的操作,相对内存来说很耗时。但内存里的数据一断电就全没了,后边有时间再说怎么把内存数据及时保存到磁盘,即所谓的持久化

redis提供两种方式进行持久化:

一种是RDB持久化(原理是将Reids在内存中的数据库记录定时dump到磁盘上的RDB持久化),即定时保存

另外一种是AOF(append only file)持久化(原理是将Reids的操作日志以追加的方式写入文件)即实时保存

3 redis一般存储什么数据?

1 查询耗时的数据

我们一般是把redis当缓存来用的,什么意思呢,就是把经常用到的一些查询耗时的数据在每次入mysql库的时候就放到redis里,下次来查的时候先查下redis里有没有数据,有的话就直接取了,就不用查询数据库了

举个例子

现在前端页面要实时显示下某物体的实时轨迹,那你每秒(或者不到1s)都查一次数据库,每次都把所有的历史轨迹从数据库查出来会相对较慢,你可以每次在物体上传自己位置到数据库的时候,先存到redis,然后再存数据库,量大的话让数据库慢慢存,你每次只查redis就行了,相对每次查数据库会快很多

2 短期内不怎么变化的数据

举个例子

比如a网站首页一天有100万人访问,其中有一个板块为推荐新闻(大家看到的都一样,这个数据今天不会变化)。要是直接从数据库查询,那么一天就要多消耗100万次数据库请求。将这种热点数据存到Redis(内存)中,要用的时候,直接从内存取,极大的提高了速度和节约了服务器的开销。

上一篇下一篇

猜你喜欢

热点阅读