官方解释:The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker.
:开源的内存数据存储被数百万开发人员用作数据库、缓存、流引擎和消息代理。
定义:开源的数据存储系统。
*相比于直接使用变量存储数据,Redis可以在分布式系统中基于网络把自己的数据给别的进程甚至是别的主机的进程使用。而使用变量存储数据则会受限于进程的隔离性。
Redis优点:
除了上述官方提到的优点之外,Redis被广泛使用的最核心的一个优点就是快,Redis为什么快呢?
1:Redis将数据保存在内存当中
2:Redis核心功能都是用比较简单的逻辑,使用简单高效的数据结构
3:Redis使用了IO多路复用的方式监听多个socket连接客户端
4:Redis是单线程模型(数据处理和命令执行):易于开发和维护(不涉及并发安全之类的),性能瓶颈,不涉及线程调度与切换
多核cpu发挥不了作用怎么办?
比较早期的版本,最新版本io同样引入多线程以增加吞吐量.
Redis为什么这么快? - 知乎 (zhihu.com)
Redis应用场景:
1.Real-time data store:在对实时性要求比较高的业务场景(位置服务,搜索引擎等),Redis被用来作为数据库,即把“快”作为第一要务的业务场景。(代价是更大的开销)
2:Caching :作为缓存:基于二八原则,将Redis作为缓存服务器缓存那些经常使用的热数据,以弥补Mysql等服务器慢的缺陷。相比于mysql,Redis的速度快非常多,但是空间大小比mysql小,所有我们可以将二者结合起来进行使用。(我们可以结合Redis和mysql的优点,对那经常使用的%20的数据使用Redis进行存储,对于那些不常使用的百分之八十的数据使用Mysql进行存储)。
***Redis作为数据库时,保存全量数据,数据不能丢失;作为缓存时,保存部分数据,全量数据在Mysql数据库中保存,即使丢失也可以重新加载得到。
3:session storage:用于会话信息的保存:在分布式系统当中,负载均衡器会把用户请求合理分配在不同的应用服务器上,这就导致了每次可能访问到不同的应用服务器,那么如何保证让用户每次都能得到之前的会话信息呢?
解决方案就是将所有的会话信息保存在Redis上,每个应用服务器从Redis上获取session信息。
4:Streaming & messaging:作为消息队列:这也是最初设计Redis的初心