河南网站建设电话,松岗网站建设,网络舆情监控系统,东莞公众号开发Redis是一个在内存中存储数据的中间件#xff0c;主要用于作为数据库、数据缓存#xff0c;在分布式系统中有着非常重要的地位。面试中可以围绕Redis的特性进行介绍。
一、Redis特性
1、在内存中存储数据
MySQL主要是“表”的方式来存储组织数据的#xff0c;是“关系型数…Redis是一个在内存中存储数据的中间件主要用于作为数据库、数据缓存在分布式系统中有着非常重要的地位。面试中可以围绕Redis的特性进行介绍。
一、Redis特性
1、在内存中存储数据
MySQL主要是“表”的方式来存储组织数据的是“关系型数据库”
Redis主要是通过“键值对”的方式来存储组织数据的key都是stringvalue则可以是stringslistshashessetssorted setsstreams 等是“非关系型数据库”。 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、会话存储
cookie实现用户身份信息的保存只是在浏览器这边存储了一个用户的身份标识sessionId需要配合session
session存储在应用服务器上这里真正存储了用户数据
在分布式操作系统中用户的登录请求会被负载均衡器分配到应用服务器上同一个用户的请求登录操作在不同时刻可能保存在不同的应用服务器上这对保存信息不是很友好。因此有两种方案来解决这个问题。
1想办法让负载均衡器把同一个用户的请求始终打到同一个机器上不能轮询了而是要通过userId之类的方式来分配机器
2把会话数据单独拎出来存储在Redis中常见的做法
这种方法即使应用程序重启了会话不会丢失 4、消息队列应用少
基于这个可以实现一个网络版本的生产者消费者模型。优势解耦合、削峰填谷