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的基本操作~


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

祝你好运,向阳而生~ 

 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文件上传漏洞-upload靶场1-2关 通过笔记(如何区分前段验证和后端验证)

文件上传漏洞-upload靶场1-2关 通过笔记(区分前段验证和后端验证) 前言 upload是一个文件上传的专用靶场,搭设也非常简单,只需要把相关源码文件放到apache的网站目录下即可使用,或者去github下载一键绿化包进行安装链…

基于SSM+vue框架的校园代购服务订单管理系统源码和论文

基于SSMvue框架的校园代购服务订单管理系统源码和论文070 开发工具:idea 数据库mysql5.7 数据库链接工具:navcat,小海豚等 技术:ssm 摘 要 在新发展的时代,众多的软件被开发出来,给用户带来了很大的选择余地&am…

git及GitHub的使用

文章目录 git在本地仓库的使用github使用创建仓库https协议连接(不推荐,现在用起来比较麻烦)ssh连接(推荐)git分支操作冲突处理忽略文件 git在本地仓库的使用 1.在目标目录下右键打开git bash here 2.创建用户名和邮箱(注: 下载完…

网络编程套接字(2): 简单的UDP网络程序

文章目录 网络编程套接字(2): 简单的UDP网络程序3. 简单的UDP网络程序3.1 服务端创建(1) 创建套接字(2) 绑定端口号(3) sockaddr_in结构体(4) 数据的接收与发送接收发送 3.2 客户端创建3.3 代码编写(1) v1_简单发送消息(2) v2_小写转大写(3) v3_模拟命令行解释器(4) v4_多线程版…

[论文阅读笔记26]Tracking Everything Everywhere All at Once

论文地址: 论文 代码地址: 代码 这是一篇效果极好的像素级跟踪的文章, 发表在ICCV2023, 可以非常好的应对遮挡等情形, 其根本的方法在于将2D点投影到一个伪3D(quasi-3D)空间, 然后再映射回去, 就可以在其他帧中得到稳定跟踪. 这篇文章的方法不是很好理解, 代码也刚开源, 做一…

兵力集中更容易进攻获胜

我兵力集中,敌兵力分散,进攻可胜 【安志强趣讲《孙子兵法》第21讲】 【原文】 进而不可御者,冲其虚也;退而不可追者,速而不可及也。 【趣讲白话】 进攻时,敌人无法抵御,那是攻击了敌人空虚的地方…

小程序input的placeholder不垂直居中的问题解决

input的placeholder不垂直居中&#xff0c;input设置高度后&#xff0c;使用line-height只能使输入的文字垂直居中&#xff0c;但是placeholder不会居中&#xff0c;反而会偏上。 首先placeholder样式自定义 有两种方法&#xff0c;第一种行内样式&#xff1a; <input ty…

大彩串口屏使用记录

写在最前面 屏幕型号 DC10600M070 IDE VisualTFT&#xff08;官方&#xff09; VSCode&#xff08;lua编程&#xff09; 用之前看一下官方那个1小时的视频教程就大概懂控件怎么用了&#xff0c;用官方的软件VisualTFT很简单 本文只是简单记录遇到的一些坑 lua编辑器 VisualTF…

uview ui 查看版号

版本查询2种方式 有两种方式可以查询到正在使用的uView的版本&#xff1a; // 通过console.log打印的形式 console.log(uni.$u.config.v);// 可以查阅uView的配置文件得知当前版本号&#xff0c;具体位置为&#xff1a; /uview-ui/libs/config/config.js

Linux centos7 bash编程(小练习)

一、打印九九乘法口诀 这一个for循环嵌套的小练习&#xff0c;难度不大。提供一种写法&#xff0c;供参考&#xff1a; #!/bin/bash # 文件名&#xff1a;99table.sh # 打印输出九九乘法口诀表 for i in {1..9} do for ((j1;j<$i;j)) do …

R-Meta分析核心技术教程

详情点击链接&#xff1a;全流程R-Meta分析核心技术教程 一&#xff0c;Meta分析的选题与检索 1、Meta分析的选题与文献检索 1)什么是Meta分析 2)Meta分析的选题策略 3)精确检索策略&#xff0c;如何检索全、检索准 4)文献的管理与清洗&#xff0c;如何制定文献纳入排除标准 …

【Git】测试持续集成——Git+Gitee+PyCharm

文章目录 概述一、使用Gitee1. 注册账号2. 绑定邮箱3. 新建仓库4. 查看项目地址 二、安装配置Git1. 下载安装包2. 校验是否安装成功。3. 配置Git4. Git命令5. Git实操 三、PyCharmGit1. 配置Git2. Clone项目3. 提交文件到服务器4. 从服务器拉取文件 概述 持续集成&#xff08;…

开源在物联网(IoT)中的应用

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

react解决死循环方法?

使用useeffect&#xff08;副作用&#xff09;方法结束这个操作 1、导入useeffect、useState 2、把下方代码写入&#xff1a;里面填写的是你要终止某个东西的代码 注意&#xff1a;不可不写&#xff0c;也可以写依赖或不写

基于Python+djangoAI 农作物病虫害预警系统智能识别系统设计与实现(源码&教程)

1.背景 随着科技的发展&#xff0c;机器学习技术在各个领域中的应用越来越广泛。在农业领域&#xff0c;机器学习技术的应用有助于提高农作物的产量和质量&#xff0c;降低农业生产的成本。本文针对农作物健康识别问题&#xff0c;提出一种基于机器学习方法的农作健康识别系统&…

Spring Boot整合RabbitMQ之路由模式(Direct)

RabbitMQ中的路由模式&#xff08;Direct模式&#xff09;应该是在实际工作中运用的比较多的一种模式了&#xff0c;这个模式和发布与订阅模式的区别在于路由模式需要有一个routingKey&#xff0c;在配置上&#xff0c;交换机类型需要注入DirectExchange类型的交换机bean对象。…

JMeter性能测试(上)

一、基础简介 界面 打开方式 双击 jmeter.bat双击 ApacheJMeter.jsr命令行输入 java -jar ApacheJMeter.jar 目录 BIN 目录&#xff1a;存放可执行文件和配置文件 docs目录&#xff1a;api文档&#xff0c;用于开发扩展组件 printable-docs目录&#xff1a;用户帮助手册 li…

docker harbor私有库

目录 一.Harbor介绍 二.Harbor的特性 三.Harbor的构成 四.Harbor构建Docker私有仓库 4.2在Server主机上部署Harbor服务&#xff08;192.168.158.25&#xff09; 4.2.1 这时候这边就可以去查看192.168.158.25网页 4.3此时可真机访问serverIP 4.4通过127.0.0.1来登陆和推送镜…

vue 中 axios 的安装及使用

vue 中 axios 的安装及使用 1. axios 安装2. axios使用 1. axios 安装 首先&#xff0c;打开当前的项目终端&#xff0c;输入 npm install axios --save-dev验证是否安装成功&#xff0c;检查项目根目录下的 package.json,其中的 devDependencies 里面会多出一个axios及其版本…

Linux(基础篇二)

Linux基础篇 Linux基础篇二5. 系统管理5.1 Linux中的进程和服务5.3 systemctl5.4 运行级别CentOS 6CentOS 7 5.5 关机重启命令 Linux基础篇二 5. 系统管理 5.1 Linux中的进程和服务 计算机中&#xff0c;一个正在执行的程序或命令&#xff0c;被叫做“进程”(process) 启动之…