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

Redis7学习——Redis的初认识

目录

一、前言

二、认识Redis

1、Redis是什么?

2、Redis的主流功能

3、Redis的优势

三、总结


一、前言

        在之前的文章中,我们已经学习过了如 MySQL 一样的传统关系型数据库,这里的“关系”指的是数据之间的逻辑联系,通过表格的形式展现出来。“关系”听起来很抽象,其实它就是指表和表之间可以有关联。在数据库里,这种关系通常是通过“外键”来实现的,比如让员工表里的“部门”指向“部门表”的“部门ID”。

 但是传统的的关系型数据库在某些情境下存在着很多问题如:

  • 磁盘的I/O瓶颈:传统数据库的数据存储在磁盘上,即使有索引,高并发读写仍然较慢(毫秒级)。
  • 复杂查询:很多场景(如缓存、会话存储)只需要简单的 get / set 操作,但关系型数据库仍然要走 SQL 解析、执行计划优化等流程,效率较低。
  • 数据结构单一:传统数据库以“表”为核心,而某些业务(如排行榜、社交网络)需要更灵活的数据结构(如有序集合、哈希)。
  • 高并发下的扩展性问题:关系型数据库的横向扩展(分库分表)较复杂。

拿最简单的案例来说,微信朋友圈点赞,对于MySQL来说,点赞之后还需要在数据库中进行update操作,MySQL是在磁盘上的数据库,这样多次I/O 会导致性能的急剧下降,但是Redis就不存在这样的问题,它是在内存上的,所以在面对高并发高性能要求时,redis在内存中肯定是比在磁盘上更快的。

基于以上的传统型关系数据库的不足之处

2009 年,意大利程序员 Salvatore Sanfilippo(网名 antirez)为了解决自己公司的实时日志分析问题,开发了 Redis。

二、认识Redis

1、Redis是什么?

RedisRemote Dictionary Service,远程字典服务)是一个开源的 内存数据库(In-Memory Data Store),同时支持持久化到磁盘。它以 键值对(Key-Value) 形式存储数据,并支持多种数据结构(如字符串、哈希、列表、集合等)。数据是存在内存中的,同时Redis支持事务、持久化、LUA脚本、发布/订阅、缓存淘汰、流技术等多种功能特性提供了主从模式、Redis Sentinel和Redis Cluster集群架构方案。它的核心特点是:

  • 高性能:数据存储在内存中,读写速度极快(微秒级)。
  • 丰富的数据结构:支持字符串、哈希、列表、集合、有序集合等。
  • 持久化:可配置将数据保存到磁盘,避免重启后数据丢失。
  • 高可用与分布式:支持主从复制、哨兵模式、集群模式。
  • 多功能:可用作缓存、消息队列、数据库等。

2、Redis的主流功能

  • Redis分布式缓存,是挡在MySQL数据库前面的一条缓冲带,如图所示

  1. 当客户端发起请求之后优先查询Redis缓存,并非直接访问MySQL数据库,这是为了利用 Redis 的内存存储特性,以微秒级速度响应高频请求,减少对 MySQL 的直接访问。
  2. 如果Redis中没有所需数据(即缓存未命中),此时请求会“穿透缓存”,访问MySQL数据库,获取原始数据。
  3. 从 MySQL 获取数据后,主动将数据写入 Redis 缓存(称为“缓存回填”或“预热”)。这是为了确保下一次相同请求能直接命中缓存,避免重复穿透到 MySQL,提升后续请求的响应速度。
  4. 如果如果 Redis 中存在所需数据,Redis 直接将数据返回给客户端,无需访问 MySQL

其本质就是在高并发的情况下,对MySQL数据库来说,减少直接的压力,避免崩溃,对用户来说,直接提升响应的速度,保障用户的体验。

  • 内存存储和持久化(RDB+AOF),redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务。Redis 作为 内存数据库,数据默认存储在内存中,这是其高性能的核心原因。但内存数据易失(如进程崩溃、机器断电),因此 持久化机制(将内存数据异步写入磁盘)是 Redis 可靠性的关键。Redis 提供两种持久化方案:RDB(快照)AOF(日志),可单独使用或组合使用。
  • 高可用的架构搭配,从单机到集群,Redis 的高可用架构设计需解决 数据不丢失(持久化)、服务不中断(故障转移)、容量可扩展(分布式存储)三大核心问题。
  • 缓存穿透、击穿、雪崩
  • 分布式锁

下面一张图就可以基本概括Redis的所有功能了

3、Redis的优势

  1. 性能极高 -Redis能读的速度是110000次/秒,写的速度是81000次/秒
  2. Redis数据类型丰富,不仅仅支持简单的key-value类型的数据,同时还提供list,zset,set,hash等数据结构的存储
  3. Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用
  4. Redis支持数据的备份,即master-slave模式的数据备份
    1. 生成dump.rpb文件(可以在配置文件中改) 默认生成在redis.conf同级目录

上面这张架构图以 “分层视角” 清晰展示了 Redis 的核心能力(底层到上层)及应用场景。

  1. 底层:持久化机制(RDB/AOF)保证 Redis 不是“一次性内存玩具”,而是可靠的数据存储。
  2. 中间层是工具库:数据结构(5种基础+Stream等扩展)+ 核心特性(事务/Lua/淘汰策略)提供“乐高积木”,支持开发者组合出复杂功能。
  3. 上层是“业务落地”:通过工具库的组合,解决分布式系统中的共性问题(缓存、会话、锁、计数),最终支撑业务增长。

三、总结

本篇文章主要是在学习Redis数据库之前先对 Redis数据库作一个大致的认识,知道它有哪些功能和特性,接下来的文章才是深入分析和实践每一个功能和特性。


感谢阅读!

http://www.dtcms.com/a/329775.html

相关文章:

  • 51c自动驾驶~合集14
  • Docker:快速部署 Temporal 工作流引擎的技术指南
  • 3DM游戏运行库合集离线安装包下载, msvcp140.dll丢失等问题修复
  • 迅雷链接在线解密解析工具系统源码/本地化API/开源
  • 前缀函数的运用
  • Harmony OS 开发入门 第三章
  • Python Day29 CSS样式
  • Protobuf学习(1)—— 初识与安装
  • 代理解决跨域
  • SparseArray ArrayMap
  • Activity和Fragment生命周期
  • Spring进阶(八股篇)
  • 栈和队列详解
  • LeetCode刷题记录----437.路径总和Ⅲ(medium)
  • 学习:JS进阶[10]内置构造函数
  • HunyuanVideo-Avatar:为多个角色制作高保真音频驱动的人体动画
  • C++哈希进阶-位图
  • 计算机网络技术-知识篇(Day.1)
  • java14学习笔记-打包工具 (Incubator)
  • MoonBit Perals Vol.05: 函数式里的依赖注入:Reader Monad
  • JPrint免费的Web静默打印控件:PDF打印中文乱码异常解决方案
  • 什么是JSP和Servlet以及二者的关系
  • window显示驱动开发—多平面覆盖 VidPN 呈现
  • MVCC底层实现原理
  • Flask入门:从零搭建Web服务器
  • 雅思大作文笔记
  • iOS 签名证书在版本迭代和iOS上架中的全流程应用
  • Docker 在 Linux 中的额外资源占用分析
  • 智汇河套,量子“风暴”:量子科技未来产业发展论坛深度研讨加速产业成果转化
  • 信息学奥林匹克竞赛(NOI/NOIP/CSP) 学习进度自查表