二、Redis的特性与应用场景

2024-01-02 20:38:48

Redis是一个在内存中存储数据的中间件,主要用于作为数据库、数据缓存,在分布式系统中有着非常重要的地位。面试中可以围绕Redis的特性进行介绍。

一、Redis特性

1、在内存中存储数据

MySQL主要是“表”的方式来存储组织数据的,是“关系型数据库”

Redis主要是通过“键值对”的方式来存储组织数据的,key都是string,value则可以是strings,lists,hashes,sets,sorted sets,streams 等,是“非关系型数据库”。

2、可编程的

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

3、可扩展性

可以在Redis原有的功能基础上再进行扩展,Redis提供了一组API。自己去扩展Redis的功能,比如通过扩展,让Redis支持更多的数据结构和更多的命令。

4、持久化

Redis把数据存储在内存中,但是内存的数据是易失的,进程的退出或系统的重启都可能导致数据丢失。Redis会把数据存储在硬盘上,以内存为主,硬盘为辅。如果Redis重启了,就会在重启时加载硬盘中的备份数据,使Redis恢复到重启前的状态。

5、集群

Redis作为分布式系统的中间件,能够支持集群是很关键的。类似于之间所说的“分库分表”,引入Redis能存储的数据是有限的(内存空间有限),引入多个主机,部署多个Redis节点,每个Redis存储数据的一部分。

6、高可用的(冗余/备份)

Redis自身支持“主从”结构的,从节点就相当于主节点的备份了。

7、快

为什么Redis快??

1、Redis数据存储在内存中,就比访问硬盘的数据库,要快很多

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

3、从网络角度上,Redis使用了 IO 多路复用的方式(epoll),类似于Java使用一个线程,管理多个socket。

4、Redis使用的是单线程模型,这样的单线程模型,减少了不必要的线程之间的竞争开销。多线程提高效率的前提是,CPU密集型任务,使用多个线程可以充分调用CPU多核资源。但是Redis的核心任务就是操作内存的数据结,不会吃很多的CPU。

二、Redis的应用场景

1、数据库

大多数情况下,数据存储考虑的都是“大”,但也有一些场景考虑的是“快”,弊端是使用Redis,硬件资源消耗较大,成本较高。Redis存储的是全量数据,这里的数据是不能随便丢失的。

2、缓存

使用MySQL数据库存数据大但是慢,根据二八原则,把热点数据拎出来,存储在Redis中。

Redis存储的是部分数据,MySQL存储的是全量数据,哪怕Redis没了,还可用从MySQL中加载。

3、会话存储

文章来源:https://blog.csdn.net/benxiangsj/article/details/135343311
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。