Redis:功能特性和应用场景

[复制链接]
发表于 2025-7-6 23:43:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
🌈 个人主页:Zfox_
🔥 系列专栏:Redis
本篇开始对于 Redis 举行正式先容和学习
🔥 认识 Redis

在开始 Redis 学习前,要先认识一下 Redis
Redis 的设计,是想要把它当做是一个数据库,一个缓存,或者说是一个消息中间件等,它的主要目的是可以在内存当中举行数据的存储
那么现在问题是,对于数据库来说,应该已经有 MySQL 这样的内容,那为什么还需要有 Redis 来作为一个数据库呢?
🦋 Redis 和 MySQL

不可否认,MySQL 确实是一个很不错的数据库软件,但是它最大的问题在于,它的访问速度比力慢,这个慢是相较于在内存当中的,由于 MySQL 本质上是存储在磁盘上的,而如果使用 Redis 作为数据库,必然会比在磁盘上要快很多,由于这是在内存当中的
但是 Redis 就一定比 MySQL 要强吗?这必然也不是的,Redis 和 MySQL 比起来最大的劣势在于,它的存储空间是有限的,这是一个很严重的问题,这就意味着,虽然有很多需要用到高性能的地方,但是终究是少数,大多数的业务着实都不需要用到特别高的性能
那么有什么特别好的方案呢?可以中和一下 Redis 和 MySQL 的优点,而且还能有一个比力好的办理方案?那就是把 Redis 和 MySQL 联合起来举利用用,也就是我们平常所说的二八原则
🦋 二八原则

所谓二八原则,说的是 20% 的热点数据可以满意 80% 数据的要求,所以一个比力好的办理方案是,如果能够把 MySQL 当中比力常用的数据缓存到 Redis 当中,这样就能对于大多数的哀求都能得到数据,而对于不常用的数据再到对应的磁盘去读取,这就是一个比力不错的办理方案
🦋 Redis 的场景

Redis 是工作在分布式系统中的,它在这个环境中才能发挥出它应有的实力,如果只是单纯的单机程序,那么本质上来说如果使用变量来举行数据的存储着实是一个比力不错的办理方式,此时着实是比使用 Redis 更加良好的选择
我们在学习操作系统的时间知道,在举行历程的通信时,不能直接举行数据的访问,这是由于历程和历程之间是可以举行数据的隔离的,数据要被历程举行隔离的,而有一种历程通信是借助网络举行通信,所以 Redis 本质上来说就可以把自己内存中的变量给其他的历程,乃至可以直接用其他主机的历程来举行数据的访问,这样就办理了刚才所说的场景,这也是 Redis 的一个使用场景
🦋 Redis 的设计

Redis 设计的初心,是打算把它当做一个消息中间件来举行处理的,也就是所谓的消息队列,这样就可以在分布式系统下使用一个生产者消费者的模型,但是遗憾的是,现在很少有这样的使用场景,反而是有更加专业的消息中间件来取代 Redis 的功能,不过 Redis 仍旧是被使用非常广泛的中间件
🔥 Redis 的特性和优点

Redis 是一个内存中存储数据的中间件,所以下面开始就举行分析,Redis 作为一个数据库,作为数据缓存,是如安在分布式系统中举行工作的?它的能力是什么?
🦋 在内存中存储数据

MySQL 中主要是通过表的方式来举行存储构造数据的,这种也叫做是一种关系型数据库,而在 Redis 中,则更多的是使用一种 键值对 的方式来举行数据的构造和存储,这种叫做黑白关系型数据库,而内存的数据存储
🦋 编程能力

针对于 Redis 的操作,可以通过一些简单的交互式的命令来举行操作,也可以通过一些脚本的方式,批量化的实行一些操作,或者是带有逻辑,更紧张的是,可以使用一个 Lua 的脚本语言,来举行编写
🦋 扩展能力

Redis 还提供了一组原生的API,借助这个API就可以使得在原有的基础上举行扩展,例如可以使用C、C++或者是 Rust 来举行编写扩展,本质上来说就是一个动态链接库
🦋 长期化

Redis 的数据是存储在内存中的,但是内存是有弊端的,比如它的内容是很轻易被丢失的,当历程退出或者是系统重启的时间,就会把信息举行丢失,那为相识决这样的问题,所以 Redis 还会把数据再硬盘上举行存储一次,内存为主,硬盘为辅,那么硬盘中的数据着实就是相当于对于 Redis 的内存数据举行了一个备份,那么当 Redis 重启的时间,就会在加载硬盘中举行备份数据的加载,就会让 Redis 的内存恢复到原来重启前的状态
🦋 支持集群

Redis 作为是一个分布式系统的中间件,它的别的一个能力是可以支持集群,这是一个相当紧张的能力,这代表的是可以举行水平扩展,换句话说就是支持分表和分库这样的雷同操作
本质上来说,这是由于 Redis 能够存储的数据是有限的,这就意味着如果有太多的数据是不能放在一个 Redis 当中的,因此就有了集群的概念,可以引入多个主机,摆设多个 Redis 节点,每个 Redis 的节点来存储数据的一部分
🦋 高可用

Redis 自身也是支持主从布局的,附属节点就相当于是对于主节点的备份,那这就意味着当主节点出现问题的时间,可以直接让附属节点对于主节点举行替换,这样就可以满意主节点的要求,而不会导致程序堕落
🦋 快

下面说的是 Redis 的最大的特点,那就是 Redis 很快
为什么快?


  • Redis 的数据是存储在内存当中的,就好比访问磁盘的数据库,固然要快很多
  • Redis 的核心功能都比力简单,都是隶属于是一些比力基础的项目逻辑,一些核心功能都是存储在一些操作内存的数据布局,那这就意味着不需要和 MySQL 一样调用复杂的接口和举行条件判定
  • 从网络的角度来讲,Redis 使用的是IO多路复用的方式,这点也不再多说,多路复用必然是可以提高效率的
  • 从 Redis 的线程模型来说,它自己是一个单线程的模型,虽然在高版本的 Redis 当中确实引入了多线程的操作,但是不管怎么说,单线程的模型也可以减少线程之间不必要的竞争开销
  • Redis 是使用 C语言 举行开发的,虽然这个来由并不太好,但也勉强算是它快的来由吧
🔥 Redis 的应用场景

下面说说 Redis 的一些场景
🦋 Redis 作为数据库

在大多数情况下,思量到数据存储,优先思量的是容量,但是在一些极度的场景下,也不排除需要比力快的场景
例如在一些搜刮引擎的项目当中,对于搜刮的性能要求黑白常高的,那么此时从数据库中举行读取的效率就不高,所以在搜素引擎中是不可以使用 MySQL 这样的内容的,因此就需要把这些要举行检索的数据都存储在内存当中,这样就可以使用雷同于 Redis 这样的内存级别的数据库来资助完成
固然这样的数据库就需要硬件资源的支持了
Redis 当中存储的是全量数据,这里的数据是不可以进丢弃的
🦋 Redis 作为缓存

使用 MySQL 举行存储数据,优点是内存大,但是缺点是很慢,由于二八原则的存在,所以我们可以把热点数据从 MySQL 中拿出来,存储在 Redis 中,而 Redis 就提供了这样缓存的功能,Redis 中存储的是部分的数据,全量数据照旧以 MySQL 为主,哪怕 Redis 的数据丢掉了,也还可以从 MySQL 中存储出来,这和上面的 Redis 作为数据库是不一样的,这个数据库是一种对于 MySQL 这样的硬盘级别的数据库的内容的一种备份
🦋 Redis 作为会话存储对象

在 HTTP 的学习中,知道了 HTTP 是一个无状态的协议,因此引入的办理方案是使用了一个 cookie来举行办理,cookie 可以实现用户身份信息的保存,这也就可以保证在浏览器的这一段存储了一个用户的身份标识,而在服务器端是存储的是用户的数据,在服务器端也叫做是 session
那这意味着什么?假设现在有一个浏览器想要举行登录操作,而在服务端是接纳的是负载平衡的模式,那么在负载平衡器要分配到各个应用服务器,那么服务器怎么举行 cookie 的识别呢?
下面提供两种办理的方式

  • 想办法让负载平衡器,把同一个用户的哀求始终放到一个机器上,比如可以使用 ID 举行取模的方式来办理,举行机器的分配
  • 把会话的数据单独拿出来,放到一个或者一组独立的机器上举行存储,这个着实就是 Redis ,那这也就意味着,当应用程序重启的时间会话不会丢失
🦋 Redis 作为消息队列

Redis 作为消息队列的场景着实不多,由于 Redis 的初心虽然是设计为一个消息队列,来支持一个生产者和消费者的模型,但是究竟上,它并没有被广泛的使用,因此 Redis 作为消息队列的这场景在实际的应用场景中并不多
🦋 总结

Redis 着实就是一个使用内存举行存储数据的中间件,一般可以作为有内存级别的数据库,缓存信息,或者是消息队列来举利用用,更主要的是,Redis 很快
🔥 共勉

😋 以上就是我对 Redis:功能特性和应用场景 的理解, 以为这篇博客对你有资助的,可以点赞收藏关注支持一波~ 😉

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表