news 2026/10/30 20:32:44

Redis基础了解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Redis基础了解

Redis 基础

一、什么是 Redis

​

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

​

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

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

  • 关系型数据库

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

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

    • 像MySQL、PostgreSQL、Oracle、SQLServer这样的数据库就是关系型数据库

  • 非关系型数据库

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

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

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

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

通过上面的简单了解,你就能区分出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 日志),主要用于重启恢复,不保证强持久强制持久化,数据写入磁盘,安全性高
扩展方式主要是水平分片,主从复制用于读写分离和高可用支持垂直扩展(更强的主机)和水平扩展(分库分表、中间件)
典型使用场景缓存、计数器、排行榜、会话存储、消息队列(高速读写,对持久性要求不高)核心业务数据存储、复杂查询、报表、交易系统(需要数据一致性和持久性)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/30 20:30:22

Grok 生成 word 文档下载不了不用愁,AI 导出鸭搭配多款工具,全方位破除文档导出阻碍

关键词 Grok、Word文档下载失败、AI 导出鸭、文档导出、格式转换、Pandoc、WPS文档导出 引言 当下不少用户使用Grok生成文档后频繁遭遇Word文件无法正常下载的故障,文档落地留存成为刚需。各类传统导出方式各有短板,AI 导出鸭作为针对性工具脱颖而出。本…

作者头像 李华
网站建设 2026/10/30 20:31:33

Redis 三大架构深度解析:主从、哨兵、Cluster 演进、区别与选型

Redis 作为当下主流的高性能内存数据库,在业务中从单机逐步演进出主从模式、哨兵模式、Redis Cluster 集群三大主流架构。很多开发者在学习和面试中,容易混淆三者的定位、依赖关系、适用场景,也搞不清架构演进的底层逻辑。 本文将按照由浅入…

作者头像 李华
网站建设 2026/10/23 15:11:56

YimMenu完整指南:如何安全使用GTA5最强防护菜单

YimMenu完整指南:如何安全使用GTA5最强防护菜单 【免费下载链接】YimMenu YimMenu, a GTA V menu protecting against a wide ranges of the public crashes and improving the overall experience. 项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenu …

作者头像 李华
网站建设 2026/10/23 3:02:24

OT远程访问安全_securing-remote-access-to-ot-environment

以下为本文档的中文说明securing-remote-access-to-ot-environment(保障 OT 环境远程访问安全)是一个专注于工业控制系统(ICS)和运营技术(OT)网络远程访问安全加固的高专业度技能。OT 环境涵盖电力能源、石…

作者头像 李华
网站建设 2026/10/23 1:35:30

librw渲染后端实战:D3D9与OpenGL实现对比分析

librw渲染后端实战:D3D9与OpenGL实现对比分析 【免费下载链接】librw A re-implementation of the RenderWare Graphics engine 项目地址: https://gitcode.com/gh_mirrors/li/librw librw是一个开源的RenderWare图形引擎重新实现项目,它提供了跨…

作者头像 李华