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

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云数据库 RDS MySQL,集群系列 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: 因为快,所以小 [不是], 所以不建议存储大量数据 )

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
4月前
|
存储 NoSQL 关系型数据库
|
2月前
|
消息中间件 缓存 NoSQL
Redis快速度特性及为什么支持多线程及应用场景
Redis快速度特性及为什么支持多线程及应用场景
74 11
|
1月前
|
NoSQL Java 调度
Lettuce的特性和内部实现问题之Redis的管道模式提升性能的问题如何解决
Lettuce的特性和内部实现问题之Redis的管道模式提升性能的问题如何解决
|
1月前
|
NoSQL 网络协议 安全
Lettuce的特性和内部实现问题之Lettuce天然地使用管道模式与Redis交互的问题如何解决
Lettuce的特性和内部实现问题之Lettuce天然地使用管道模式与Redis交互的问题如何解决
|
2月前
|
存储 缓存 监控
Redis问题之使用Guava Cache相比自己设计本地缓存有哪些优势
Redis问题之使用Guava Cache相比自己设计本地缓存有哪些优势
|
3月前
|
存储 NoSQL 算法
Redis集群,集群的概念 三种主流分片方式1.哈希求余 一致性哈希算法:方案三:哈希槽分区算法问题一Redis集群是最多有16384个分片吗问题二:为什么是16384个,集群扩容:1.新的主节点
Redis集群,集群的概念 三种主流分片方式1.哈希求余 一致性哈希算法:方案三:哈希槽分区算法问题一Redis集群是最多有16384个分片吗问题二:为什么是16384个,集群扩容:1.新的主节点
|
3月前
|
监控 NoSQL 网络安全
Redis 6和7:探索新版本中的新特性
Redis 6和7:探索新版本中的新特性
|
4月前
|
存储 缓存 NoSQL
由菜鸟到大神,谈谈redis的概念、实战、原理、高级使用方法
【5月更文挑战第18天】Redis是一个开源的内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构,如字符串、哈希、列表、集合、有序集合等。
79 10
|
3月前
|
数据采集 NoSQL Redis
scrapy_redis概念作用和流程
scrapy_redis概念作用和流程
|
4月前
|
缓存 NoSQL Redis
Redis缓存名词解析
Redis缓存名词解析
32 0