[Redis#2] 定义 | 使用场景 | 安装教程 | 快!

news2024/11/23 16:20:36

目录

1. 定义

In-memory data structures 在内存中存储数据

2. 优点!快

Programmability 可编程性

Extensibility 扩展性

Persistence 持久化

Clustering 分布式集群

High availability 高可用性

⭕快速访问的实现

3. 使用场景

1.Real-time data store

2.Caching & session storage

Session Storage

如何解决上述问题?

3.Streaming & messaging

4. 安装 redis

配置Redis支持远程连接

重启Redis服务

测试连接

注意事项

5.关于

客户端

快!


1. 定义

In-memory data structures 在内存中存储数据
  • support for strings, hashes, lists, sets, sorted sets, streams, and more.
    • key 都是 string
    • value 则可以是上述的数据结构

2. 优点!

Programmability 可编程性
  • Server-side scripting with Lua and server-side stored procedures with Redis Functions.
Extensibility 扩展性
  • A module API for building custom extensions to Redis in C, C++, and Rust.
  • 通过这几个语言编写 Redis 扩展(本质上就是一个动态链接库)
    • 自己去扩展 Redis 的功能。
    • 比如:Redis 自身已经提供了很多的数据结构和命令。通过扩展,让 Redis 支持更多的数据结构以及支持更多的命令。
    • 类似于 linux 的动态库.so 实现扩展
Persistence 持久化
  • Keeps the dataset in memory for fast access but can also persist all writes to permanent storage to survive reboots and system failures.
    • 内存中的数据是“易失”的。
    • 进程退出/系统重启后,Redis 会把数据存储在硬盘上。
    • 内存为主,硬盘为辅。(硬盘相当于对内存的数据备份了一下)
Clustering 分布式集群
  • Horizontal scalability with hash-based sharding, scaling to millions of nodes with automatic re-partitioning when growing the cluster.
    • Redis 作为一个分布式系统中的中间件,能够支持集群是很关键的~~
  • 这个水平扩展,类似于 "分库表"
  • 一个 Redis 能存储的数据是有限的(内存空间有限)
  • 引入多个主机,部署多个 Redis 节点。每个 Redis 存储数据的一部分
High availability 高可用性
  • Replication with automatic failover for both standalone and clustered deployments.
  • 高可用 ==冗余 / 备份

Redis 自身也是支持 "主从" 结构的。 从节点相当于主节点的备份。

⭕快速访问的实现

  1. Redis 数据在内存中,就比访问硬盘的数据库要快很多。
  2. Redis 核心功能都是比较简单的逻辑,比较简单地操作内存的数据结构。
  3. 从网络角度上,Redis 使用了 IO 多路复用的方式 (epoll)。

使用一个线程管理很多个 socket ~

  1. Redis 使用的是单线程模型(虽然更高版本的 Redis 引入了多线程)。
    • 这样的单线程模型,减少了不必要的线程之间的竞争开销。
    • 线程提高了效率的前提是 CPU 密集型的任务。使用多线程可以充分的利用 CPU 多核资源。
  1. [个人不太认可,但是网上这么说的很多]
  • Redis 是使用 C 语言开发的,所以就快。
    • MySQL 也是 C 语言开发的。

注意:在对 redis 的优点进行理解,很多都是相较于 mysql 的


3. 使用场景

1.Real-time data store

  • 做数据库

Redis' versatile in-memory data structures enable building data infrastructure for real-time applications that require low latency and high throughput.

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

例如:

  • 搜索引擎 -> 广告搜索(商业搜索)
    对于性能要求是非常高的~
    搜索所有没有用到MySQL这样的数据库~~
  • 当然,使用这样的内存数据库,存储大量的数据,需要不少的硬件资源的~~ 充值了。
  • Redis 存的是全量数据,这里的数据是不能随便丢的~~

2.Caching & session storage

  • 缓存热点数据

Redis speed makes it ideal for caching database queries, complex computations, API calls, and session state.

  • 使用 MySQL 存数据,大慢。
    二八原则,把热点数据拎出来,存储在 redis 中的。
  • Redis 存的是部分数据
  • 全量数据都是以 mysql 为主的。
    哪怕 Redis 的数据没了,还可以从 mysql 这边再加载回来~~
Session Storage

Cookie

  • 实现用户身份信息的保存,浏览器这边存储了一个用户的 sessionId

需要 session 配合,才可调用到真正的用户数据

  • 之前 senssion 是存储在应用服务器上的
  • 现在可以运用 Redis存储 session 信息,实现高效调用

用户访问网页的思考:

如何解决上述问题?
  1. 让负载均衡器将同一个用户的请求始终打到同一台服务器上(不能轮询,而是通过 userId 类似的方式来分配服务器)
  2. 把会话数据单独拿出来放到一组独立的机器上存储(Redis)

3.Streaming & messaging

The stream data type enables high-rate data ingestion, messaging, event sourcing, and notifications.

  • 消息队列(服务器),不是 Linux 进程间通信的那个消息队列(这个可以忘记了~~
  • 基于这个可以实现一个网络版本的生产者消费者模型~~
  • 业界也有很多知名的消息队列,比如 RabbitMQ、Kafka、RocketMQ……
    Redis 也提供了消息队列的功能。
  • 如果当前场景中,对于消息队列的功能依赖的不多,并且又不想引入额外的依赖,Redis 可以作为一个选择。

Redis 不能做的事情?

存储大规模数据~

💡阅读官方文档是最有效的学习方式,上文就是对官方文档的一些批注


4. 安装 redis

首先,确保你的系统是最新的。可以通过运行以下命令来更新你的软件包列表:

sudo apt update

然后,使用apt安装Redis:

sudo apt install redis-server -y

配置Redis支持远程连接

默认情况下,Redis仅监听本地回环接口(127.0.0.1),这意味着只有在同一台机器上的客户端才能连接到Redis服务器。为了允许从其他机器进行连接,你需要编辑Redis的配置文件。

  • 打开Redis配置文件:使用文本编辑器(如nano或vim)打开Redis配置文件/etc/redis/redis.conf
sudo nano /etc/redis/redis.conf
  • 修改绑定地址:找到bind指令,默认可能设置为127.0.0.1。将其更改为0.0.0.0,以便Redis监听所有网络接口。如果bind行前面有注释符号(#),请删除该符号以取消注释此行:
# bind 127.0.0.1
bind 0.0.0.0
  • 关闭保护模式:找到protected-mode指令,并将其值从yes更改为no。保护模式是一种安全特性,当Redis没有密码保护并且监听非本地网络接口时,会阻止某些命令的执行。由于我们正在开放Redis以接受远程连接,因此需要关闭保护模式:
protected-mode no

  • 保存并退出:完成编辑后,保存文件并退出编辑器。如果你使用的是nano,可以通过按Ctrl+O保存,然后按Ctrl+X退出。

重启Redis服务

为了让更改生效,你需要重启Redis服务:

sudo service redis-server restart

测试连接

此时可以通过redis-cli命令进入Redis客户端

问题

解决:

如果进入客户端后,输入ping返回一个PONG那么就算安装成功了。ctrl+d 可以退出~

注意事项

  • 开启Redis的远程访问前,请确保已经配置了合适的防火墙规则,只允许受信任的IP地址访问Redis端口。
  • 考虑设置一个密码来增强安全性。可以在/etc/redis/redis.conf中找到requirepass指令并设置一个强密码。
  • 如果你的Redis服务器暴露在互联网上,建议使用SSL/TLS加密通信,以防止数据泄露。

完成上述步骤后,Redis服务器应该已经配置好可以接受远程连接啦


5.关于

客户端

  • Redis 客户端也是一个客户端-服务器结构的程序!!
  • MySQL 也是
  • Redis 客户端和服务端可以在同一个主机上,也可以在不同主机上。(当前阶段,我们一般只有一台机器,此时客户端和服务端就是在同一个机器上)


Redis 的客户端也有多种形式:

1. 自带了命令行客户端
[ 之后的文章主要使用这个客户端]

root@bit:~# redis-cli
127.0.0.1:6379>
root@bit:~# redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379>

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

3. 基于 redis 的 api 自行开发客户端[工作中最主要的形态]

  • 非常类似于 mysql 的 C 语言 API 和 JDBC

快!

  • 我们谈到的 redis 的快,是相对于 mysql 这样的关系型数据库的。
  • 但是如果直接和内存中的操作变量相比,就没有优势了,甚至更慢了!!
  • redis 是先通过网络!!再操作内存

是否引入一个技术,一定要想清楚来龙去脉,想清楚能够解决啥问题,引入了啥问题。

千万不能 “无脑” 使用。不能有“锤子思维”

是否要使用 redis?

对症下药,具体问题具体分析,要结合实际的需求来确定!!!

例如:

引入 redis 的缺点,会更慢。

  • 但是有了 redis 之后,可以通过网络,把数据单独存储。
  • 后续应用服务器重启,不会影响到数据内容。
  • 未来要扩展成分布式系统,使用 redis 是更佳的选择。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2246113.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dubbo源码解析-服务调用(七)

一、服务调用流程 服务在订阅过程中,把notify 过来的urls 都转成了invoker,不知道大家是否还记得前面的rpc 过程,protocol也是在服务端和消费端各连接子一个invoker,如下图: 这张图主要展示rpc 主流程,消费…

Postman之newman

系列文章目录 1.Postman之安装及汉化基本使用介绍 2.Postman之变量操作 3.Postman之数据提取 4.Postman之pm.test断言操作 5.Postman之newman Postman之newman 1.基础环境node安装1.1.配置环境变量1.2.安装newman和html报告组件 2.newman运行 newman可以理解为,没有…

shell脚本(五)

声明! 学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关&#…

人口老龄化社区服务|基于springboot+vue的人口老龄化社区服务与管理平台(源码+数据库+文档)

目录 基于springbootvue的人口老龄化社区服务与管理平台 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博主介绍:✌️大厂码农|毕设布道师,阿里云…

初识WGCLOUD - 监测磁盘空间还能使用多久

WGCLOUD是一款免费开源的运维监控软件,性能优秀,部署简单,轻巧使用,支持大部分的Linux和Windows、安卓、MacOS等平台安装部署 最近发布的新版本 v3.5.4,WGCLOUD新增了可以自动计算每个磁盘剩余空间的可使用天数&#x…

Linux各种并发服务器优缺点

本文旨在介绍针对“无并发C/S模型”改进的方法总结以及各种改进方法的优缺点,具体函数的实现并不介绍。 1. 无并发C/S模型 创建服务器流程分析: socket()创建服务器的监听套接字bind()将服务器给服务器的监听套接字绑定IP地址和Port端口号listen()设置…

【PPTist】添加PPT模版

前言:这篇文章来探索一下如何应用其他的PPT模版,给一个下拉菜单,列出几个项目中内置的模版 PPT模版数据 (一)增加菜单项 首先在下面这个菜单中增加一个“切换模版”的菜单项,点击之后在弹出框中显示所有的…

【Python · PyTorch】卷积神经网络 CNN(LeNet-5网络)

【Python PyTorch】卷积神经网络 CNN(LeNet-5网络) 1. LeNet-5网络※ LeNet-5网络结构 2. 读取数据2.1 Torchvision读取数据2.2 MNIST & FashionMNIST 下载解包读取数据 2. Mnist※ 训练 LeNet5 预测分类 3. EMnist※ 训练 LeNet5 预测分类 4. Fash…

如何用通义灵码助力项目开发 | OceanBase obdiag 项目共建实践

本文来自 obdiag 项目共建的用户分享 一、背景 我的数据库探索之旅始于OceanBase。作为一位满怀好奇心的DBA,我内心始终怀揣着对数据库内部运作机制的无尽向往。开源如同一把钥匙,为我们这些求知欲旺盛的“好奇猫”解锁了通往新知的神秘大门。在众多分布…

如何给 Apache 新站点目录配置 SELinux ?

在 web 服务器管理领域,确保服务器环境的安全性至关重要。SELinux (Security-Enhanced Linux) 是保护 Linux 服务器最有效的工具之一,它是一种强制访问控制 (MAC mandatory access control) 安全机制。当使用最流行的 web 服务器 Apache 提供 web 内容时…

【电子物证培训】龙信助力三明市公安局电子物证取证竞赛

文章关键词:电子数据取证、手机取证、电子物证、介质取证 为了进一步提升福建省三明市公安机关刑侦部门在电子物证领域的专业技能,强化队伍实战能力,三明市公安机关刑侦部门举办电子物证专业技能竞赛,龙信受邀为竞赛提供全方位的…

【海思Hi3519DV500】双目网络相机套板硬件规划方案

Hi3519DV500双目网络相机套板是针对该芯片设计的一款 IP 编码板 PCBA,硬件接口支持双目sensor 接入,SDIO3.0 接口、USB2.0、USB3.0、UART 接口以及丰富的 IO 扩展应用,可根据各种使用场景设计相应扩展板,丰富外围接口,…

【青牛科技】电流模式PWM控制器系列--D4870

概述: D4870是用于开关电源的电流模式PWM(PWM)控制器系列产品。 该电路待机功耗低,启动电流低。在待机模式下,电路进入间歇工作模式,从而有效地降低电路的待机功耗。 电路的开关频率为 65KHz,抖动的振荡频率&…

对象:是什么,使用,遍历对象,内置对象

对象使用: 对象访问:(对象每个属性之间用逗号隔开) 补充:也可以通过 对象名[‘属性名’] 对象方法: 方法名:匿名函数 调用方法不需要控制台打印,只要调用就自动输出值 遍历对象: …

tcp/ip异常断开调试笔记——lwip

问题一:异常掉线 异常断开模拟 1、单片机端做服务端(只监听一个客户端),电脑做客户端连接 2、尝试连接确定通信正常,断开网线。电脑客户端点击断开 3、经过一段时间(超过tcp/ip 3次握手时间&#xff09…

JavaScript获取URL参数常见的4种方法

🚀 个人简介:某大型国企资深软件开发工程师,信息系统项目管理师、CSDN优质创作者、阿里云专家博主,华为云云享专家,分享前端后端相关技术与工作常见问题~ 💟 作 者:码喽的自我修养&#x1f9…

40分钟学 Go 语言高并发:并发下载器开发实战教程

并发下载器开发实战教程 一、系统设计概述 1.1 功能需求表 功能模块描述技术要点分片下载将大文件分成多个小块并发下载goroutine池、分片算法断点续传支持下载中断后继续下载文件指针定位、临时文件管理进度显示实时显示下载进度和速度进度计算、速度统计错误处理处理下载过…

《Object类》

目录 一、Object类 1.1 定义与地位 1.2 toString()方法 1.3 equals()方法 1.4 hashcode()方法 一、Object类 1.1 定义与地位 Object类是Java语言中的根类,所有的类(除了Object类)都直接或间接继承自Object。这就意味着在Java中&#xf…

Vercel 设置自动部署 GitHub 项目

Vercel 设置自动部署 GitHub 项目 问题背景 最近 Vercel 调整了其部署政策,免费版用户无法继续使用自动部署功能,除非升级到 Pro 计划。但是,我们可以通过配置 Deploy Hooks 来实现同样的自动部署效果。 解决方案 通过设置 Vercel 的 Dep…

2023年9月GESPC++一级真题解析

一、单选题(每题2分,共30分) 题号 123456789101112131415 答案 CDBCDBACACBBDDA 1. 我们通常说的 “ 内存 ” 属于计算机中的()。 A. 输出设备 B. 输 ⼊ 设备 C. 存储设备 D. 打印设备 【答案】 C 【考纲知识点】…