Redis的特性和应用场景

目录

Redis的特性

内存存储数据

可编程性

可扩展性

持久化

水平扩展性

高可用性

为什么redis是快的

Redis的应用场景

数据库

缓存和会话存储

消息队列

redis是一个客户端服务器结构的程序


Redis是一个在内存中存储数据的中间件,能够用于作为数据库,数据缓存等,能在分布式系统中大展拳脚.

Redis的特性

关于redis的特性,在redis官网中给出了六个.

内存存储数据

Redis的特性和应用场景_第1张图片

在内存中存储数据.

Mysql主要通过表的方式来存储和组织数据,是关系型数据库.

Redis则是主要通过键值对的方式来存储和组织数据,是一个非关系型数据库.

key是string类型,value可以是上述类型.

可编程性

Redis的特性和应用场景_第2张图片

针对redis的操作,可以直接通过简单的交互式命令进行操作,也可以通过一些脚本的方式,批量执行一些带有逻辑的操作.

可扩展性

Redis的特性和应用场景_第3张图片

可以在redis原有的功能基础上进行扩展,redis提供了一组api.可以通过c,c++和rust编写redis扩展.

比如redis自身已经提供了很多的数据结构和命令,通过扩展,让redis支持更多的数据结构和命令.

持久化

Redis的特性和应用场景_第4张图片

redis是把数据存储在内存上的,而内存的数据是易失的,进程退出和系统重启都会造成内存数据的丢失.所以redis也会把数据存储在硬盘上.内存为主,硬盘为辅.硬盘相当于对内存的数据备份了一下,如果redis重启了,就会在重启时加载硬盘中的备份数据,使redis的内存恢复到重启之前的状态.

水平扩展性

Redis的特性和应用场景_第5张图片

redis作为一个分布式系统的中间件,能够支持集群是非常关键的,这个水平扩展就类似于"分库分表".一个redis能存储的数据是有限的(内存空间有限),引入多个主机,部署多个redis节点,每个redis存储数据的一部分.

高可用性

Redis的特性和应用场景_第6张图片

redis自身也是支持主从结构的,从节点就相当于是主节点的备份了.具有自动故障转移机制,主节点挂了,从节点能够随时上来顶替主节点.


为什么redis是快的

快是redis的一个极其重要的优势,那redis为什么是快的?

1.redis数据存储在内存中,访问内存是比访问硬盘要快的.

2.redis的核心功能都是比较简单的逻辑,核心功能都是比较简单的操作内存的数据结构.

3.从网络角度上来讲,redis使用了IO多路复用的方式.

4.redis使用的是单线程的模型(虽然高版本的redis引入了多线程),这样的单线程模型,减少了线程之间不必要的竞争开销.

5.redis是使用c语言开发的,相对于其他编程语言来说,速度快一些.


Redis的应用场景

数据库

Redis的特性和应用场景_第7张图片

大多数情况下,考虑到数据存储,优先考虑到的是空间要大,但是仍有一些场景,优先考虑的的快.

当然使用这样的内存数据库存储大量的数据,需要更高配置的内存硬件.

redis当作数据库使用的时候,存的是全量数据,这里的数据是不能随便删除的.

缓存和会话存储

Redis的特性和应用场景_第8张图片

使用mysql存储数据虽然大了,但是速度慢.因此我们可以把热点数据单独拿出来,放到redis中存储.

作为缓存,redis存的是部分数据,哪怕redis中的数据丢失了,还可以从mysql那里加载回来.

作为会话存储,之前我们的会话是存储在应用服务器上的,一旦服务器重启,会话就没了.要想实现会话的持久化存储,我们可以把会话存储到redis中.

消息队列

Redis的特性和应用场景_第9张图片

redis作为消息队列,可以实现一个网络版本的生产者消费者模型.对于分布式系统来说,服务器和服务器之间有时候也需要用到生产者消费者模型.(解耦,削峰填谷)

如果当前场景中,对于消息队列的功能依赖不是很多,并且不想引入其他依赖,此时redis可以作为一个选择.


redis是一个客户端服务器结构的程序

redis的客户端和服务器可以在同一个主机上,也可以在不同的主机上.

Redis的特性和应用场景_第10张图片

reids的客户端有多种形态:自带的命令行客户端,图形化界面的客户端和基于redis的api自行开发的客户端.

你可能感兴趣的:(redis,redis,mybatis,数据库)