今天遇到的一个面试题,回答了几个方面,都被面试官反问说你说的mysql也行呀,为啥还要用redis,直接当场蒙圈,选择说了I don't know;
就想知道 为什么要使用redis呢?
加快速度,减少数据库压力,
请采纳
redis快,可以做队列,可以做缓存,查询次数比较多且修改次数较少的数据放到缓存中,有效提高查询性能,
redis是内存型数据库,类似于缓存的功能,将频繁用到的数据放到redis中提高访问速度,降低后端rdbms数据库的压力。
mysql查询是基于磁盘的,redis是基于内存的,所以在查询速度上肯定是redis会快一点,所以我们针对很多热点数据,通常会对其进行缓存,让访问去找redis获取数据而不用每次都去数据库查找,这样又两个好处,一是查询时间短,用户体验会好一点,二是减少数据库压力。
redis现在是比较流行的技术了,可以做缓存、分布式锁等等。。。
redis数据在内存,mysql数据在磁盘。redis查得快,但存不了太多数据。mysql查得慢,但可以存很多数据。高性能的地方使用redis,不需要高性能的地方使用mysql。
对啊 就是快啊 内存比外存快了不知多少倍。 单机r轻松10 万并发 不香嘛
缓存的性能优越性
MySQL基于磁盘读写,Redis基于内存读写,性能上更加优越。
Redis缓存比MySQL缓存更加灵活,适用范围更广
MySQL也有缓存,MySQL的缓存是将SQL作为Key,查询结果作为Value存在服务器内存中,也能一定程度上减轻数据库的压力,但只能缓存SQL查询结果,而Redis可以缓存各种自定义格式的内容,比如第三方接口的返回的结果。
这面试官问题问的,就像问绿皮车和动车,去远方都可以。redis时内存形式,读取快,在不是很频繁改动的数据而经常读取的时候超级契合;那我说个redis可以,而mysql不行。比如说:在登录后会导致切换到独立的数据源,而此数据源没有系统表,只有业务表,这个时候代码里有直接mysql查询系统表就有问题了。在遇到这样的面试官,反抛个问题给他:saas系统中的多数据源切换数据源时,由于切换的数据源没有系统表,需要用到系统数据表数据时,mysql就不行,redis行。如有帮助,请采纳!
首先,redis跟Mysql的区别是,redis是一个内存形式的数据库,读写不要走磁盘,比Mysql的要快
所以,更多的场景是,redis可以用来做缓存
还有,redis是单线程命令执行的,所以可以用来做分布式锁、分布式ID等等
还有,redis支持set zset等数据类型,可以做排行榜或者抽奖等场景
做缓存呀,提高性能,然后可以集中管理,放session什么的,分布式锁等