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

Redis初始以及安装

"梦却了无影踪,梦仍不曾改动" 


初始Redis

(1) Redis是什么?

        要认识、学习一个软件,最重要的途径无一是去该软件的官方文档里瞅瞅、转悠转悠。             

         从官方文档的介绍中得知,Redis是一种工作于内存,存储内存数据的中间件。

消息队列 vs 进程间通信消息队列

        也许对学过系统的友友们看到消息队列,可能立马会联想到进程间通信中提到的消息队列。这两个是一样的技术嘛?答案是两者相差甚远。Redis的初心就是用来作为一个“中间件”消息队列使用。不过当下存在其他做这个"中间件"更好的软件,Redis这个功能也就不了了之。        

        进程间的消息队列仅仅限定于一台主机上的两个进程。Redis是个网络服务,它是跨网络通信的,可以把自己的变量给别的进程,甚至是别的主机进程使用。

       也许你会说,定义变量不就是在内存中存储数据嘛,这交由进程自己不就得了?当然,在一台主机上这么做是肯定很科学、很简便的,但如果是多台主机需要这同一变量的数据呢?Redis只有在分布式系统中,才能发挥其威力。如果是单机程序,直接通过变量存储的方式,是比Redis更优的方式。

(2) 架构的演进

        关于分布式系统,我们可以从最初端进行演示:

单机架构:        

        可是随着业务的不断发展,用户数量的增多,其数据量也自然而然变得庞大起来。一台主机难以应付!因为两台服务器进程都要吃单台主机的资源,两者属于是 ”竞争的关系"。

        一台主机的硬件资源是有限的!

        引入分布式当然是迫不得已,因为这样的管理、维护成本是增加的,系统的复杂度也是提升的。 

应用服务和数据库分离:                      

应用服务器集群架构:

        受制于单个应用不足以支持海量的并发请求,单台应用服务器已经无法满足需求。

 

        可是,随着你的用户量持续增加,用户数据也会日益增多,我们知道Mysql是与硬盘进行IO交互的访问速度是很受限的。如果我们把数据库分为热、冷数据,将冷数据放到Mysql中,因为访问需求少,把热数据放到缓存服务器中,访问需求的多,并且访问速度相对于Mysql而言更快、更高效。用作什么当我们的缓存服务器软件呢? 答案是Redis!

        之后的架构演进可以看看这篇文章,这里不在再费口舌:

https://blog.csdn.net/RNGWGzZs/article/details/132202821?spm=1001.2014.3001.5501

        所以如何理解,诸如Mysql、Oracle、sql server等数据库与Redis的关系?这些优秀的数据库和Redis有什么区别呢?

Mysql vs Redis

        我们都知道Mysql是与硬盘数据进行交互的,虽然Mysql自己有一份独立的缓冲区用来进行页面的换入换出,但是也避免不了直接与硬件IO时,速度慢的问题(这里的快慢并非是无参照的,而是比对访问内存和访问外设速度的比较的)。而在很多互联网产品中,对于性能的要求是很高的。

       反观Redis,它是工作于内存的中间件,也可以当做一个数据库来使用,其访问的资源、对象也是内存中的数据,其访问速度自然而然相比Mysql快很多!

        但,和Mysql相比,其劣势就在于存储空间是有限的的,远不及Mysql的存储能力。

        而在大多数场景,为了为了填补Redis存储能力有限,Mysql访问速度过慢,典型的方案就是将Redis作为Mysql的Cache(缓存),常访问的数据存储在Redis上(热数据),其余数据就存储在Mysql上。一条访问请求的到来,先去Redis中查找数据,如果数据存在,读取数据直接返回,如果数据不存在才会去Mysql中查找。

        数据的访问也有自己的"二八原则","20%的热点数据,可以满足80%的访问需求"。当然,任何一些技术的引入是解决了当前问题,但也会随之而来带来新的问题,比如,数据发送修改,Redis和Mysql之间的数据同步等问题。

(3) Core capabilities

        我们继续将目光放回到Redis的官方文档,看看Redis这个强大软件的能力:

 

(4) Redis的使用场景

Session storage: 

 

Redis为什么快!

        Redis在这里的快是相对的,换句话说,和Mysql比起来Redis为什么快。        

● Redis的数据存储在内存,就比访问硬盘数据库要快很多。(这是我们一直说的点).

● Redis核心功能都是比较简单的逻辑,操作比较简单的数据结构. 相反Mysql针对数据插入、删除会有各种的主键、约束等等.

● Redis模型使用的是单线程(虽然更高的版本引入了多线程),正因为单线程模型的存在,减少了不必要的线程之间互斥、同步等资源竞争的开销.

● 从网络模型上看,Redis使用了IO多路复用(例如select\poll\epoll). 


Redis安装

(1) 新增scl软件源

         在Cenots上安装Redis:

如果是Centos8,yum仓库默认给的是Redis5的版本,直接yum install 即可~

如果是Centos7,yum仓库默认给的是Redis3系列,是很老的版本。

所以 我们需要安装额外的软件源: scl

yum install centos-release-scl-rh
yum install rh-redis5-redis

 

(2) 创建符号链接

        Centos7安装还需要修改一些配置项,比其他版本是更麻烦的。

        我们来查看默认的安装目录:/opt/rh/rh-redis5/root/usr/bin/

         这藏得太深了,不⽅便使⽤,我们通过符号链接,把需要⽤到的关键内容设置到⽅便使⽤的⽬录中。  

●  针对可执行程序设置符号链接

cd /usr/bin
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-server ./redis-server
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-sentinel ./redis-sentinel
ln -s /opt/rh/rh-redis5/root/usr/bin/redis-cli ./redis-cli

 

● 针对配置文件设置符号链接

cd /etc/
ln -s /etc/opt/rh/rh-redis5/ ./redis

 

(3) 修改配置⽂件       

        我们需要找到redis的配置文件: /etc/redis/redis.conf

1)设置ip地址

    

2) 关闭保护模式

 

3) 启动守护进程

        因为Linux只能启动一个前台进程,所以很多服务进程都是以后台进程的方式运行。

4) 设置工作目录

         同样这里的工作目录太深了,我们可以重新配置一个目录。

 

4) 设置⽇志⽬录

        这里同工作目录同理,也需要重新设置一下。  

 

(4) 启动Redis服务器

# 启动 redis
redis-server /etc/redis/redis.conf
# 停⽌ redis
# 先查看到redis-server的pid
ps aux | grep redis
# 通过kill命令直接杀死redis进程
kill 进程id

        这样,我们也就成功安装了redis-server了!      

  

(5) redis-cli

        redis同Mysql一样都是网络服务器,是一个客户端-服务器结构的程序!

如何启动redis-cli?

        Redis客户端也有很多种形态,我们后面主要使用redis-cli自带的客户端。

        我们输入命令,完成对Redis的基本操作~


本篇到此结束,感谢你的阅读。

祝你好运,向阳而生~ 

 

相关文章:

Redis初始以及安装

"梦却了无影踪,梦仍不曾改动" 初始Redis (1) Redis是什么? 要认识、学习一个软件,最重要的途径无一是去该软件的官方文档里瞅瞅、转悠转悠。 从官方文档的介绍中得知,Redis是一种工作于内存,…...

react导出、导入文件

导出文件: if (res) {let binaryData [];binaryData.push(res);let blobUrl ;blobUrl res;// let blobUrl window.URL.createObjectURL(new Blob(binaryData, { type: application / zip }));console.log(blobUrl);const eleLink document.createElement(a);el…...

(一)Redis——String

以下是在Ubuntu上安装Redis的步骤: 打开终端并输入以下命令以更新软件包列表:sudo apt update输入以下命令以安装Redis:sudo apt install redis-server SET key value GET key key & value 区分大小写 127.0.0.1:6379> set name no…...

Spring Boot多环境指定yml或者properties

Spring Boot多环境指定yml或者properties 文章目录 Spring Boot多环境指定yml或者properties加载顺序配置指定某个yml 加载顺序 ● application-local.properties ● application.properties ● application-local.yml ● application.yml application.propertes server.port…...

MinDoc:针对IT团队的文档、笔记系统

作为一名IT从业者,无论是在公司团队中,还是在平时自己写一些笔记、博客等文档,我都习惯使用markdown来进行书写。在使用过许多支持markdown语法的系统或软件(如Typora、未知、我来、思源、觅道等)后,我总觉…...

【分享】华为设备登录安全配置案例

微思网络www.xmws.cn,2002年成立,专业IT认证培训21年,面向全国招生! 微 信 号 咨 询: xmws-IT 华为HCIA试听课程:超级实用,华为VRP系统文件详解【视频教学】华为VRP系统文件详解 华为HCIA试听课…...

Starrocks与MySQL函数的区别

Starrocks与MySQL函数的区别 Starrocks是一款分布式OLAP数据库,而MySQL则是一种关系型数据库。由于其不同的架构和用途,它们在支持的函数方面存在一些差异。下面将详细介绍Starrocks和MySQL之间常见函数的区别。 1. 聚合函数(Aggregate Fun…...

【HTML】学习笔记(自用持续更新)

HTML基本框架 只定义信息&#xff0c;通过标签组成整个页面框架&#xff0c;再通过CSS渲染使得前端页面做的好看 <!DOCTYPE HTML> \\html类型 <html><body><h1>这是一个标题</h1><p>这是一段文字</p></body> </html> …...

代码随想录训练营第四十二天|0-1背包理论基础(一)、0-1背包理论基础(二)、416分割等和子集

0-1背包理论基础(一) 文章讲解/视频链接&#xff1a;代码随想录 小节&#xff1a;本节课讲得是0-1背包的二维数组解法&#xff0c;dp[i][j]的含义是从物品0-i中不重复的拿出可以装进容量为j的背包的最大价值的物品&#xff0c;状态转移公式为&#xff0c;dp[i][j] max(dp[i - …...

linux 免交互

Linux 免交互 1、免交互概念2、基本免交互的例子2.1命令行免交互统计2.2使用脚本免交互统计2.3使用免交互命令打印2.4免交互修改密码2.5重定向查看2.6重定向到指定文件2.7重定向直接指定文件2.8使用脚本完成重定向输入2.9免交互脚本完成赋值变量2.10关闭变量替换功能&#xff0…...

自然语言处理从入门到应用——LangChain:索引(Indexes)-[文档加载器(Document Loaders)]

分类目录&#xff1a;《自然语言处理从入门到应用》总目录 合并语言模型和我们自己的文本数据是区分它们的一种强大方式&#xff0c;这样做的第一步是将数据加载到“文档”中&#xff0c;文档加载器的作用就是使这个过程变得简单。 LangChain提供了三种文档加载器&#xff1a;…...

7.接着跑一下triton官方教程

5.Model Ensemble 在此示例中&#xff0c;我们将探索使用模型集成来仅通过单个网络调用在服务器端执行多个模型。这样做的好处是减少了在客户端和服务器之间复制数据的次数&#xff0c;并消除了网络调用固有的一些延迟。 为了说明创建模型集成的过程&#xff0c;我们将重用第…...

波奇学C++:stl的list模拟实现

list是双向带头链表。所以迭代器end()相当于哨兵卫的头。 list不支持和[]重载&#xff0c;原因在于list空间不是连续的&#xff0c;和[]的代价比较大。 访问第n个节点&#xff0c;只能用for循环&#xff0c;来实现 list<int> l; l.push_back(0); l.push_back(1); l.pu…...

Flask 项目结构

前面我们了解了 Flask 框架的特性和一些用法&#xff0c;比如创建一个简单应用、做些页面&#xff0c;以及增加鉴权模块等&#xff0c;如果要将 Flask 用于实际项目开发&#xff0c;还需要了解一下 Flask 项目结构。 Flask 是一个轻量级的 Web 框架&#xff0c;扩展性强&#…...

云计算在IT领域的发展和应用

文章目录 云计算的发展历程云计算的核心概念云计算在IT领域的应用1. 基础设施即服务&#xff08;IaaS&#xff09;&#xff1a;2. 平台即服务&#xff08;PaaS&#xff09;&#xff1a;3. 软件即服务&#xff08;SaaS&#xff09;&#xff1a; 云计算的拓展应用结论 &#x1f3…...

8年测试经验之谈 —— 接口自动化测试requests

1.什么是requests&#xff1f; requests是一个Python第三方库&#xff0c;处理URL资源特别方便 2.安装requests pip3 install requests 如果遇到Permission denied安装失败&#xff0c;请加上sudo重试 3.使用requests 3.1get请求方法 3.1.1基本的get请求 import reques…...

求助:vue从后端获取数据,如何对获得的数据进行拆分?

从后端获取数据格式如下&#xff1a; { "count": 3, "lists": [ { "id": 2, "name_id": 4, "name": "4: 2201030019: 张四", }, { …...

html5拖拽文件上传需阻止默认事件

至少阻止下列3个事件的默认行为才能实现文件拖拽上传 var bdocument.getElementById(box) b.ondragenter(e)>{e.preventDefault()console.log(aaa,e.dataTransfer.files); } b.ondragover(e)>{e.preventDefault()console.log(bb,e.dataTransfer.files); }b.ondrop(e)>…...

深入剖析Kubernetes之Pod基本概念(一)

文章目录 Pod 中重要字段Pod 的生命周期 Pod&#xff0c;而不是容器&#xff0c;才是 Kubernetes 项目中的最小编排单位。将这个设计落实到 API 对象上&#xff0c;容器&#xff08;Container&#xff09;就成了 Pod 属性里的一个普通的字段。那么&#xff0c;到底哪些属性属于…...

idea 对JavaScript进行debug调试

文章目录 1.新增 JavaScript Debug 配置2.配置访问地址3.访问url. 打断点测试 前言 : 工作中接手别人的前端代码没有注释&#xff0c;看浏览器的network或者console切来切去&#xff0c;很麻烦&#xff0c;可以试试idea自带的javscript debug功能。 1.新增 JavaScript Debug 配…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控&#xff0c;故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令&#xff1a;jps [options] [hostid] 功能&#xff1a;本地虚拟机进程显示进程ID&#xff08;与ps相同&#xff09;&#xff0c;可同时显示主类&#x…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...