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

Redis基础了解

Redis 基础

一、什么是 Redis

总的来说,Redis 是一种基于键值对的 NoSQL数据库

这时候你可能会问,什么是 NoSQL?这个和 我们了解的 MySQL有什么区别?

想要知道这些问题,我们要知道数据库有很多种类型,而这里主要体现了关系型数据库非关系型数据库

  • 关系型数据库

    • 像 Excel 表格,一种二维表结构,一条数据由多个字段组成,每条数据都包含固定的字段,可以内容为空

    idnameage
    1lisi18
    • 表与表之间可以进行关联

    • MySQLPostgreSQLOracleSQLServer这样的数据库就是关系型数据库

  • 非关系型数据库

    • 像JSON文件或者字典,每条数据可以有不同的字段,不固定,可以进行嵌套,形成复杂的结构

    • 比如 { "user": { "name": "Alice", "age": 30, "hobbies": ["reading", "coding"] } } 或者

      { "user_123": { "name": "张三", "age": 28, "hobbies": ["读书", "跑步"], "address": { "city": "北京", } } }
    • RedisMongoDBHBase都是非关系型数据库

  • 关系型数据库和非关系型数据库的主要区别就是数据的存储方式对事务的支持

通过上面的简单了解,你就能区分出SQL和NoSQL的的区别以及大致的特征,所以Redis和MySQL的区别很大,这也就说明这两种数据库的使用场景也有很大区别,我们下面来揭开Redis的神秘面纱。

二、Redis的特性

1. 速度快

  • Redis把数据存储到内存中,操作内存比操作硬盘更快

  • Redis是C语言实现的,一般来说C语言实现的程序距离操作系统更近,执行速度更快

  • Redis使用了单线程,预防了多线程的竞争问题

注意:Redis 在 6.0 版本引入了多线程机制,但主要也是在处理网络和 IO,不涉及到数据命令,即命令的执行仍然采用了单线程模式,同时这个单线程不是说整个Redis就只有一个线程,而是处理指令的就这么一个线程

  • Redis的操作指令比较简单

2. 基于键值对的数据结构

  • 几乎所有编程语言都提供了类似字典的数据结构,例如C++的map,Java的map,Python的dict等

  • Redis的键值对中的值不仅可以是字符串,还可以是具体的数据结构,支持更多的开发场景

  • 5种经常使用的数据结构:string, list, hash, set, zset (指令和底层后续讲解)

3. 丰富的功能

  • 键过期机制,可以实现缓存

  • 发布订阅功能,可以实现消息队列 ----- 你可能会吃惊,Redis开发的目的是用作消息队列的

  • 支持Lua脚本,可以使用Lua创造新的Redis指令

  • 简单的事务功能,在一定程度上保证事务的特性,和 MySQL相比差远了

  • 流水线功能,客户端可以将一批指令一次性传到Redis,减少网络开销(指令中可以提现)

4. 简单稳定

  • Redis的源码很少,相较于其他NoSQL易于了解它

  • 单线程模型

  • 不需要依赖操作系统中的类库

5. 客户端语言多

  • Redis 提供了简单的 TCP 通信协议,很多编程语言可以很方便地接入到 Redis

  • Redis 受到社区和各大公司的广泛认可,支持Redis的客户端也就非常多

6. 持久化

  • RDB:定期生成内存快照,适合备份

  • AOF:记录每条写命令,重启时重放,数据更完整

7. 主从复制

8. 高可用和分布式

  • 哨兵:监控主节点故障并自动切换

  • 集群:将数据分片到多个节点,突破单机容量

三、Redis的适用场景

1. 缓存

缓存机制几乎在所有大型网站都有使用,合理的使用缓存不仅可以加速访问速度,而且能够有效的降低后端数据源的压力。

2. 排行榜

排行榜系统几乎存在于所有的网站,例如按照热度排名的排行榜,按照发布时间的排行榜,按照各种复杂维度计算出的排行榜,Redis提供了列表和有序集合的结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。

3. 计数器

计数器在网站中的作用至关重要,例如视频网站有播放数、电商网站有浏览数,为了保证数据的实时性,每一次播放和浏览都要做加1的操作,如果并发量很大对于传统关系型数据的性能是一种挑战。Redis天然支持计数功能而且计数的性能也非常好,可以说是计数器系统的重要选择。

4. 社交网络

赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,由于社交网站访问量通常比较大,而且传统的关系型数据不太合适保存这种类型的数据,Redis提供的数据结构可以相对比较容易地实现这些功能。

5. 消息队列

消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务解耦、非实时业务削峰等 特性。Redis 提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列比还不够足够强大,但是 对于一般的消息队列功能基本可以满足。

四、Redis 和 MySQL 的主要区别

对比RedisMySQL
数据存储位置内存硬盘
存储结构键值对二维表
事务支持支持简单的事务,不支持回滚完整的ACID事务,支持回滚,隔离级别
持久化可选(RDB 快照 / AOF 日志),主要用于重启恢复,不保证强持久强制持久化,数据写入磁盘,安全性高
扩展方式主要是水平分片,主从复制用于读写分离和高可用支持垂直扩展(更强的主机)和水平扩展(分库分表、中间件)
典型使用场景缓存、计数器、排行榜、会话存储、消息队列(高速读写,对持久性要求不高)核心业务数据存储、复杂查询、报表、交易系统(需要数据一致性和持久性)
http://www.cnnetsun.cn/news/3523823.html

相关文章:

  • Grok 生成 word 文档下载不了不用愁,AI 导出鸭搭配多款工具,全方位破除文档导出阻碍
  • Ollama模型沙箱隔离实战,从dev/staging/prod三环境模型分发到CI/CD流水线集成(含GitOps模板)
  • Redis 三大架构深度解析:主从、哨兵、Cluster 演进、区别与选型
  • YimMenu完整指南:如何安全使用GTA5最强防护菜单
  • OT远程访问安全_securing-remote-access-to-ot-environment
  • librw渲染后端实战:D3D9与OpenGL实现对比分析
  • GordenPPTSkill自动更新机制详解:让你的PPT工具永远保持最新状态
  • ppt模板_0181_蓝色热情
  • DOTS-TTS-MLX-INT4开发者指南:API接口详解与自定义语音合成
  • linux中断
  • AI 导出鸭实操教程:Grok 的公式怎么复制到 word 高效无乱码
  • 专业3D点云标注工具LabelCloud:高效创建自动驾驶训练数据的终极解决方案
  • 10个CANN启航营使用技巧:从新手到专家的完整教程
  • 仅限首批内测用户知晓的Kimi搜索加速通道:通过自定义User-Agent+Accept-Language组合提升响应速度47.2%(附压测数据截图)
  • 089、锐化与边缘增强:非锐化掩模、自适应锐化与过冲抑制的实战经验
  • SpringBoot+Vue通过ModbusTCP协议实现PLC 设备连接、重连实时控制
  • ECS-Network-Racing-Sample UI系统设计:如何在DOTS架构下构建响应式用户界面
  • TMS320F2838x McBSP中断机制与多通道模式配置详解
  • 【湿法-萃取工艺6】---2#萃取(萃铜锰)---使用P204萃取剂后-全流程解析
  • 终极指南:asdf-python自动化配置与默认Python包一键安装技巧
  • 多模型协同的稳定性设计:主备切换不是加一个 if-else
  • 基于 ThinkPHP 与 Workerman 的高并发聚合支付系统架构设计与实践
  • 【湿法-萃取工艺8】---4# P507全萃钴、P204深萃钴 全流程解析
  • 深度解析Electron+Vue技术栈的磁力搜索应用架构设计
  • 治愈系微文案的数据驱动优化:从直觉写作到埋点验证的界面文案迭代
  • Clarity社区贡献指南:从问题报告到代码提交的完整流程
  • 紧急修复!Kimi搜索突然返回空结果的4种底层原因(DNS劫持/SSL证书链异常/Referer策略变更实测对比)
  • 开源项目的性能回馈机制:用户侧性能数据的采集与问题复现方法
  • 联邦学习 + 区块链:去中心化 AI 训练的隐私保护与激励设计
  • Kimera-Semantics 实战:在Euroc数据集上运行语义重建的完整流程