redis-学习笔记(概念, 相关名词, 特性, 优势: 快)

本文涉及的产品
RDS AI 助手,专业版
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS Agent(兼容OpenClaw),2核4GB
简介: redis-学习笔记(概念, 相关名词, 特性, 优势: 快)

redis 概念

官网介绍如下

redis 的初心,是作为 "消息中间件" 来用, 但是因为业内有更专业的消息中间件 (RabbitMQ …), 因此使用不多, 但是如果只是简单的消息获取,转发,也可以用redis,而不必花费大力气添加其他消息中间件

作为数据库使用, 相对于 MySQL 来说, 存储空间有限是最大的劣势,但因为其快,所有更多作为缓存来使用

如何使得存储数据又大 (不是) 又快?

把 redis 和 MySQL (或 Oracle 之类的), 结合起来使用

redis 存储热点数据, MySQL 存储所有数据, 查询数据时从redis开始, 查不到再去MySQL

redis 是在分布式系统中的大杀器, 单机系统中, 直接使用变量存储数据, 会比使用 redis 快得多. (redis 是的,可以把自己的内存分配给别的进程, 甚至是别的主机使用)

几个相关概念

应用(Application) / 系统(System)

一个应用, 就是一个组 / 服务器程序

模块(Model) / 组件(Component)

一个应用, 里面有多个功能, 每一个功能, 可称为一个 模块 / 组件

分布式(Distributed)

引入多个主机 / 服务器, 协同配合完成一系列的工作 (物理上的主机)

集群(Cluster)

引入多个主机 / 服务器, 协同配合完成一系列的工作 (逻辑上的主机)

分布式和集群的区别

分布式: 多个系统协同完成一个特定任务的系统

集群: 在几个服务器上部署相同的应用程序来分担客户端的请求

简单理解:

分布式: 把一个大业务拆成几个小业务, 每个小业务均是独立的系统, 子业务之间相互协作

集群: 处理同一个业务, 但是由系统部署多个节点

分布式的子节点也可以由集群构成

( 参考自大佬博客(点击跳转))

主(Master) / 从(Slave)

构成分布式的一个比较奇特的结构, 多个服务器节点中, 一个是主, 其余是> 从. 从节点的数据, 要从主节点同步.

中间件(Middleware)

更复杂的东西了,xdm 自己搜 (其实简单理解就是字面意义, 我是老板, 下面有几十个员工, 分派任务很麻烦, 但是中间有个经理, 我就只把任务告诉经理就 ok, 可以减少的工作量, 可以只做主要工作即可)

可用性(Availability)

(一个系统的第一要务)

系统整体可用的时间 / 总的时间

响应时间(Response Time 即 RT)

吞吐(Throughput) vs 并发(Concurrent)

(响应时间和吞吐并发 可以用来衡量服务器的性能)

Redis 特性

在内存中存储

使用键值对方式来存储组织结构, “非关系型数据库”

可编程性

使用 Lua 语言 (撸啊)

可拓展性

Redis 提供了一组API, 以便于用户使用过程中对原有功能进行在拓展


持久化

Redis 虽然是基于内存, 但是会把数据在硬盘上备份 (内存为主, 硬盘为辅)

即 Redis 重启或退出前会将内存中的数据备份一份到硬盘, 每次启用也会从硬盘上加载数据

支持集群

上面写过,集群与分布式配合使用, 类似于 “分库分表”

一个 Redis 能存储的数据是有限的(内存空间有限)

因此可以引入多个主句,部署多个 Redis 节点, 每个 Redis 存储数据的一部分

高可用性 ⇒ 冗余 / 备份

Redis 自身支持 "主 / 从"结构, 从节点就相当于主节点的备份

即 主节点挂了, 从节点顶上, 减小 bug 对程序运行的影响

Redis 为什么快

  1. Redis 直接操作内存, 肯定比访问硬盘的数据库快
  2. Redis 核心功能都是简单的逻辑 (老板给员工分任务, 肯定比员工做任务, 要简单的多得多)
  3. Redis 使用了 IO 多路复用的方式 (epoll) (简单说就是使用一个线程, 管理多个 socket , 毕竟不是每一个 socket 都会时刻被用到, 那单独占一个线程, 会很浪费资源)
  4. Redis 使用单线程模型, 减少了不要用的线程之间的竞争开销 (宏观多线程并发进行, 即多个地方同时使用 Redis 但是消息到达 Redis, 会在一个队列中排队, Redis 会单个进行调用, 即微观上是单线程)
  1. Redis 是C语言开发的(存疑, MySQL也是C语言开发的,但是二者之间的运行速度可谓天差地别,只能说相对于 java, py 实现的 Redis 来说, C语言实现确实快一点)

(PS: 因为快,所以小 [不是], 所以不建议存储大量数据 )

目录
相关文章
|
消息中间件 NoSQL Unix
Redis的基本特性以及其基础命令用法
这只是冰山一角,Redis的强大功能和简洁的操作方法值得我们深入了解和掌握,是复杂数据问题解决的有力工具。所以,来一场有趣的Redis冒险吧!
367 6
|
存储 缓存 NoSQL
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
289 2
大数据-45 Redis 持久化概念 RDB AOF机制 持久化原因和对比
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
339 5
|
存储 缓存 监控
利用 Redis 缓存特性避免缓存穿透的策略与方法
【10月更文挑战第23天】通过以上对利用 Redis 缓存特性避免缓存穿透的详细阐述,我们对这一策略有了更深入的理解。在实际应用中,我们需要根据具体情况灵活运用这些方法,并结合其他技术手段,共同保障系统的稳定和高效运行。同时,要不断关注 Redis 缓存特性的发展和变化,及时调整策略,以应对不断出现的新挑战。
271 10
|
存储 消息中间件 运维
使用Redis的优势以及会引发的问题
Redis作为一种高性能、功能丰富的内存数据结构存储系统,在缓存、消息队列和实时数据处理等场景中具有显著优势。然而,使用Redis也可能引发内存消耗大、数据一致性问题和运维复杂性等挑战。了解Redis的优缺点,合理设计和优化系统架构,可以充分发挥Redis的优势,同时避免潜在的问题。希望本文能够为您在实际应用中提供有价值的参考和指导。
389 1
|
存储 监控 NoSQL
Redis集群方案汇总:概念性介绍
本文介绍了Redis的三种高可用和分布式解决方案:**Redis Replication(主从复制)**、**Redis Sentinel(哨兵模式)** 和 **Redis Cluster(集群模式)**。Redis Replication实现数据备份和读写分离,适合数据安全和负载均衡场景;Redis Sentinel提供自动故障转移和监控功能,适用于读写分离架构;Redis Cluster通过分布式存储和自动故障转移,解决单点性能瓶颈,适合大规模数据和高并发场景。文中还详细描述了各方案的工作原理、优缺点及适用场景。
424 0
|
缓存 分布式计算 NoSQL
大数据-47 Redis 缓存过期 淘汰删除策略 LRU LFU 基础概念
大数据-47 Redis 缓存过期 淘汰删除策略 LRU LFU 基础概念
338 2
|
存储 消息中间件 NoSQL
【redis】redis的特性和主要应用场景
【redis】redis的特性和主要应用场景
794 2
|
NoSQL 关系型数据库 MySQL
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
本文全面阐述了Redis事务的特性、原理、具体命令操作,指出Redis事务具有原子性但不保证一致性、持久性和隔离性,并解释了Redis事务的适用场景和WATCH命令的乐观锁机制。
1540 0
Redis 事务特性、原理、具体命令操作全方位诠释 —— 零基础可学习
|
消息中间件 缓存 NoSQL
Redis快速度特性及为什么支持多线程及应用场景
Redis快速度特性及为什么支持多线程及应用场景
349 11