当前位置: 首页 > news >正文

Redis基本介绍

文章目录

  • 1. 认识Redis
  • 2. Redis特性
  • 3. redis的应用场景

1. 认识Redis

Redis的初心是用来作为一个“消息中间件”(消息队列)的,但是当前很少会直接使用Redis作为消息中间件,而是经常将Redis当作缓存和数据库(在内存中存储数据)来使用。

我们熟悉的MySQL最大的问题在于,访问速度比较慢,但是在很多的互联网产品中,对于性能的要求很高。Redis作为数据库来使用,其速度很快。但是Redis有一个很大的劣势,它的存储空间是有限的。

Redis是在分布式系统中,才能发挥威力的,如果只是单机程序,直接通过变量存储数据的方式是比使用Redis更优的选择。

如果在分布式系统中采用定义变量来存储数据的话是不能满足我们的需求的,定义的变量是只能在当前的服务器的进程的内部可以进行通信的。Redis就是基于网络,可以把自己内存中的变量给别的进程,甚至给别的主机的进程进行使用。

虽然可以将Redis和MySQL结合起来使用,这样可以做到又大又快,但是这样系统的复杂程度大大提升了,而且如果数据发生了修改,还涉及到Redis和MySQL之间的数据同步问题。

2. Redis特性

1. 在内存中存储数据

MySQL主要是通过“表”的方式来存储组织数据的,是“关系型数据库”。
Redis主要是通过“键值对”的方式来存储组织数据是,是“非关系型数据库”。

2.可编程性
针对Redis的操作,可以直接通过简单的交互式命令进行操作,也可以通过一些脚本的方式,批量执行一些操作,并且可以带有一些逻辑。在redis中主要是支持使用lua编程语言来编写脚本。

3. 可拓展性

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

3. 持久化
为了让Redis更快,redis是把数据存储在内存上的,但是内存上的数据是易失的(进程退出或系统重启)。
Redis会把数据存储在硬盘上(内存为主,硬盘为辅)。硬盘相当于对内存的数据备份了一下,如果redis重启了,就会在重启时加载硬盘中的备份数据,使Redis的内存恢复到重启前的状态。

4. 支持集群
一个Redis能存储的数据是有限的,如果想存储更多的数据,就可以引入多个主机,部署多个Redis节点,每个Redis存储数据的一部分。

5. 高可用(备份)
Redis自身也是支持“主从”结构的,从节点就支持主节点的备份。

问:为什么Redis快???

答:

  1. Redis数据在内存中,要比访问硬盘的数据库要快很多。
  2. Redis核心功能执行的都是比较简单的逻辑,核心功能都是比较简单的操作内存的数据结构。
  3. 从网络角度上,Redis使用 IO多路复用 (使用一个线程来管理很多个socket) 的方式,这样就可以在系统资源开销比较小的前提下,比较高效的处理大的并发量。
  4. Redis使用的是单线程模型,减少了不必要的线程之间的竞争开销。
    并不是在所有的业务场景下多线程都会提升效率的。多线程提升效率的前提是执行CPU密集型的任务,使用多个线程可以充分的利用CPU多喝资源。但是redis的核心任务主要就是操作内存中的数据结构,不会占用太多的CPU资源。
  5. redis是使用C语言开发的,所以很快。(可以根据自己的理解来看)
    MySQL也是使用C语言进行开发的。

3. redis的应用场景

1. 当作数据库来使用
大多数情况下,考虑到数据存储,优先考虑的是“大”,但是仍然有一些场景,考虑的是“快”。作为数据库时i,redis存的是全量数据,这个数据是不能随便丢失的。

2. 作为缓存

使用MySQL存储时,虽然大,但是速度慢,那么就可以将redis作为缓存,采用“二八原则”,吧一些热点数据存储在redis中。作为缓存时,redis存的时部分数据,全量数据都是以MySQL为主的,哪怕redis中的数据丢失了,还可以从MySQL中重新加载出来。

3. 会话存储
比如,cookie和sessionzhong 存储用户的身份信息。之前session是存储在服务器中的,但是这里引入了负载均衡器,我们希望负载均衡器把同一个用户的请求打到同一个应用服务器上,这个时候就可以把会话存储在Redis中,后续的每一台服务器在读取和写入会话时都去访问redis,这样不管当前用户的请求打到哪一台服务器,始终都是在redis中拿会话的,这样就可以保证所有的应用服务器都可以获取到用户信息。

这样还有一个好处,应用程序重启了,但是我们的会话是不会丢失的。

4. 消息队列(服务器)

基于这个就可以实现一个网络版本的生产者消费者模型。对于分布式系统中,服务器和服务器之间,有时候也需要使用到生产者消费者模型。

相关文章:

  • 速通KVM(云计算学习指南)
  • 【网络安全】DNS 域原理、危害及防御
  • 限制应用程序只能运行一个实例
  • 防火墙基本功能介绍
  • 多模态大语言模型arxiv论文略读(134)
  • 基于 SpringBoot+JSP 的医疗预约与诊断系统设计与实现
  • 自定义主题,echarts系列嵌套
  • 焊接机器人氩气省气节能
  • 深入浅出Node.js中间件机制
  • 014 Linux 2.6内核进程调度队列(了解)
  • 《哈希表》K倍区间(解题报告)
  • NVIDIA RTX 5090性能参数介绍 一文读懂
  • 构建高性能网络服务:从Reactor模式到现代服务器架构设计
  • SAP将指定EXCEL工作SHEET的数据上传到内表
  • 第一节 布局与盒模型-Flex与Grid布局对比
  • 什么是Sentinel
  • 使用Windows自带的WSL安装Ubuntu Linux系统
  • 1.2、CAN总线帧格式
  • 【c++八股文】Day3:inline与define与constexpr
  • Flotherm许可使用监控
  • 新翼设计网站建设公司/关键词采集网站
  • 织梦图片网站源码/买号链接
  • 做商城网站哪里/怎样开网站
  • 能不能上传网站再备案/大连seo优化
  • 香港台湾人做攻略用什么网站/电商运营培训正规平台
  • 怎样把网站的背景图片/网站优化的关键词