之前零零散散的听说过redis,一直以为是个放在本机的内存型数据库,想不通价值在哪儿,今天专门在zhihu搜了搜,跟想的挺不一样。其实sql数据库在规模公司应该也是放在专门服务器上的吧。多个服务器之间共享数据。
为什么要使用redis而不是把数据放在本地内存中?
- DsyDemo的回答 - 知乎 > https://www.zhihu.com/question/316430245/answer/2421375658
其实,redis的作者在他自己的著作中就已经说明了,他以前在一家小公司工作的时候,经常会发现,有些应用经常有各种小量数据从服务器A传给B再传给C,这种情况下,其实不如A、B、C放在一个共享存储 中存取。其实,作者的初衷是这样设计redis的,它不适合共享大量数据,目标是小量数据的共享。 随着国内的电商微服务 的兴起,redis的能力被重新发现了,形成了一套电商微服务的实战经验。但我们需要追本溯源,国内的电商,为了保证存取效率,设置了大量缓存,这是因为传统的数据库很难满足电商系统频繁的查询请求。所以,电商系统往往会引入缓存来处理,缓存基于内存来存取,而且缓存的粒度可以重新设计,比起mysql之类的数据库的页缓存,从效率和命中上都高出不少。 如果使用本地缓存,则会引入一个新的难题,那就是很难保证一致性,也就是你很难在A、B、C三个服务器的本地缓存,修改某些字段时保证信息是一致的(尤其是需要强一致的场景)。所以,集中式缓存的思想就出现了,将缓存放在一起,再加上redis单线程执行命令的特性,可以使得数据的一致性更容易维护。 当然,redis的功能已经不仅限于通常的存储概念了,更像是共享的概念,比如分布式锁 、分布式流控等等,通过这些方式来保证程序运行的一致性。还有充当消息队列、观察订阅者等使用模式。
为什么要使用redis而不是把数据放在本地内存中? - 哪吒编程的回答 - 知乎
https://www.zhihu.com/question/316430245/answer/2922922692
一、同样是缓存,用map不行吗?
- Redis可以存储几十个G的数据,Map行吗?
- Redis的缓存可以进行本地持久化,Map行吗?
- Redis可以作为分布式缓存,Map只能在同一个JVM中进行缓存;
- Redis支持每秒百万级的并发,Map行吗?
- Redis有过期机制,Map有吗?
- Redis有丰富的API,支持非常多的应用场景,Map行吗?
作者:哪吒编程
链接:https://www.zhihu.com/question/316430245/answer/2922922692
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。