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

Redis初识

1. 认识 Redis

1.1 用途:

用于存储数据,内存中存储

定义变量不就是在内存中存储数据,为什么还要使用Redis:

Redis在分布式系统中可以发挥其功能,如果是单机程序,直接通过变量存储数据的方式比Redis更优

进程具有隔离性,进程间的通信基于网络,Redis就是基于网络,可以把自己内存中的变量给别的进程,甚至在别的主机的进程进行使用

1.2 Redis主要可以用作:

  1. 数据库
  2. 缓存数据
  3. 消息队列

用作数据库:

MySQL是最常用的数据库,最大的问题在于访问速度比较慢,在很多互联网产品中,对于性能要求是很高的,Redis作为数据库使用可以快很多,但和MySQL相比,最大的劣势是存储空间有限

用作缓存:

如何使存储空间大而且访问速度快?

典型的案例是把Redis 和 MySQL 结合起来使用

“二八原则” 20%的热点数据能够满足80%的访问需求

缺点:系统的复杂程度大大提高,而且如果数据发生修改,还涉及到 Redis 和MySQL 之间的数据同步问题

用作消息队列:

Redis最初是用来作为一个“消息中间件”的“消息队列”

分布式系统下的生产者消费者模型

当前很少会直接使用Redis作为消息中间件使用

1.3 Redis特性

1.3.1 在内存中存储数据

MySQL主要通过“表”的方式来存储组织数据,成为“关系型数据库”

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

key 都是 string

value 则可以是上述的这些数据结构

1.3.2 可编程性

针对Redis的操作,可以直接通过简单的交互式命令进行操作,也可以通过一些脚本的方式,批量进行一些操作

1.3.3 可扩展性

可以在Redis原有的功能上进行扩展,Redis提供了一组API

1.3.4 持久化

Redis把数据存储在内存上,内存的数据是很容易丢失的(进程退出/重启)Redis会把数据存储在硬盘上,内存为主,硬盘为辅(硬盘相当于对内存的数据备份了一下)如果Redis重启了,就会在重启时加载硬盘中的备份数据,使Redis的内存恢复到重启前的状态

1.3.5 支持集群

Redis作为一个分布式系统中的中间件,能够支持集群是很关键的,这个水平拓展,类似于分库分表,一个Redis能存储的数据是有限的,引入多个主机,部署多个Redis节点,每个Redia存储数据的一部分

1.3.6 高可用

冗余 / 备份

Redis自身也是支持“主从”结构的,从节点就相当于主节点的备份

1.3.7 访问速度快

1. Redis数据在内存中,就比访问硬盘的数据库要快很多

2. Redis核心功能都是比较简单的逻辑,核心功能都是比较简单的操作内存的数据结构

3. 从网络角度上,Redis使用IO多路复用的方式(使用一个线程管理多个socket)

4. Redis使用单线程模型,减少了不必要的线程之间的竞争开销

5. (待考量)Redis使用C语言开发(MySQL也是C语言开发的)

1.3.8 功能丰富

除了提供5种数据结构,Redis还提供了许多额外的功能:

1. 提供了键过期功能,可以用来实现缓存

2. 提供了发布订阅功能,可以用来实现消息系统

3. 支持 Lua 脚本功能,可以利用Lua 创造出新的Redis命令

4. 提供了简单是事务功能,能在一定程度上保证事务特性

5. 提供了流水线功能,这样客户端能将一批命令一次性传到Redis,减少网络的开销

1.3.9 客户端语言多

Redis提供了简单的TCP通信协议,很多编程语言可以很方便地接入到Redis,并且由于Redis收到社区和各大公司的广泛认可,所以支持Redis的了护短语言非常多,几乎涵盖了主流的编程语言

1.4 Redis使用场景

数据库

大多数情况下,考虑到数据库存储,有限考虑的是“大”,但是仍然有一些场景,考虑的是“快”

缓存 / 会话存储

消息队列

分布式系统来说,服务器和服务器之间,有时候也需要使用到生产这消费者模型,如果当前场景中,对于消息队列的功能依赖不是很多,并且不想引入额外的依赖了,Redis可以作为一个选择


1. 缓存

缓存机制几乎所有大型网站都有使用,合理使用缓存不仅可以加速数据的访问速度,而且能有效降低后端数据源的压力。Redis提供了键值过期时间设置,并且也提供了灵活控制最大内存和内存溢出后的淘汰策略。可以这么说,一个合理的缓存设计能够为一个网站的稳定保驾护航。

2. 排行榜系统

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

3. 计数器应用

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

4. 社交网路

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

5. 消息队列系统

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


Redis不能做的事是:存储大规模数据

Redis的快是相对于MySQl这样的关系型数据库,但如果直接和内存中的操作变量相比,就没有优势了,甚至更慢

单机系统用一个Redis来存,还是直接在内存中搞一个hash map

使用hash map 是直接操作内存

使用Redis 是先通过网络,再操作内存

2. Reids操作

Redis也是一个客户端-服务器 机构的程序

Redis 客户端和服务器可以在同一个主机上,也可以在不同的主机上

Redis的客户端也有很多种形态:

1. 自带了命令行客户端

redis-cli

2. 图形化界面的客户端(桌面系统,web程序)

向这样图形化程序,依赖windows系统,在实际工作中用来办公的windows系统,连接到服务器可能会有很多限制

3. 基于Redis 的api 自行开发客户端

http://www.jsqmd.com/news/1128708/

相关文章:

  • 量子通信产业化:从保密通信到全域应用,重构信息安全底层体系
  • 告别混乱!3个技巧让mRemoteNG成为你的远程连接管理专家
  • 51单片机录音笔(带闹钟)
  • AI驱动的知识图谱如何重塑信息管理
  • 超厉害!Windows CE Dreamcast 社区版让 Dreamcast 变身可用系统
  • 【共创季稿事节】待办清单应用开发实战:ArkTS 列表渲染与状态管理深度解析
  • 智能体“互联互通“的国家标准发布:AI助手终于能互相聊天了
  • 终极音乐歌词批量获取神器:163MusicLyrics完整使用指南
  • C++语言基础3:用户自定义类型“class”详细讲解
  • 【Qt】控件(二) (geometry及与frameGeometry的区别)
  • B. Good times Good times(Codeforces 2241)
  • 51单片机电冰箱保护器
  • 独立站搭建工具测评:BBWEYY/比文云/Prismic/Vercel/Supabase(2026年7月更新)含零代码SAAS、AI编程、源码定制交付
  • 英语单词测试
  • 2026最新AI大模型零基础入门学习计划|小白程序员专属,从理论到实战直通高薪
  • 从零开始学AI:2周上手,半年做项目,1年工程落地(收藏版)
  • 训练框架实战——FSDP vs DeepSpeed,选框架不是选最好的
  • Audacity音频编辑完全指南:从零开始制作专业音频的免费方案
  • 【共创季稿事节】记事本应用开发:ArkTS 中编辑模式切换与文本处理
  • Kimi LeetCode 3464. 正方形上的点之间的最大距离 Java实现
  • 数据产业服务分类(29)——数据产业——数字经济与数据产业
  • AI 文档助手知识库:先清理旧文档,再接检索
  • 如何用ChanlunX缠论插件3分钟完成专业股票技术分析
  • 常见排序算法详解
  • RustFS保姆级教程:Docker快速部署兼容S3的本地对象存储
  • Git仓库的打包与还原 - bundle相关命令介绍
  • 别再熬夜肝论文了!2026年5款AI写论文软件实测对比,第3款真香
  • 全套 MacBook 必调设置,瞬间适配私人Mac,上手教程分享
  • 【LE Audio】CSIP精讲[5]: 蓝牙协同设备组的安全防护体系与实战规范
  • 土木工程人必备的计算工具箱,免费无广告,大幅提升工作效率