Redis:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习
🌌上期文章:首期文章
📚订阅专栏:Redis速成
希望文章对你们有所帮助

在此之前,我做过的项目里面也用到了Redis,但是其实我用的版本是Windows版本的,只学了一点皮毛,会拿来用而已,但是企业级开发大多都是用的Linux版本的Redis,所以我要把之前项目中Redis的用法给改掉,也顺便速成一下Redis的原理,毕竟还要在毕业后的暑假实习,Redis这种最基础的得扎实点。

Redis基础篇1

  • 初识Redis
    • 认识NoSQL
    • 认识Redis
  • Redis的安装及启动的三种方式
    • Linux系统与虚拟机准备
    • FinalShell软件准备与远程连接
    • Redis安装
      • 安装Redis依赖
      • 上传安装包并解压
      • 进入Redis并运行编译命令
    • Redis的启动
      • 默认启动
      • 指定配置启动
      • 开机自启
  • Redis客户端
    • Redis命令行客户端
    • Redis的图形化界面客户端(非必要)

初识Redis

认识NoSQL

Redis中的数据库与我们之前常用的MySQL这种关系型数据库是不太一样的,我们可以将NoSQL与SQL进行简单的对比:
1、结构化存储与非结构化存储
(1)SQL是结构化型的存储方式

idnameage
1张三18
2李四20

(2)NoSQL是非结构化型的存储方式

keyvalue
id1
name张三
age18

或者是Document类型的:
{id:2 name:“李四” age:20}
亦或是Graph类型的等等。。。
可以看出NoSQL的存储方式非常的不统一。

2、关系型数据库与非关系型数据库
(1)SQL通过外键来建立表之间的关系
例如以下两表:

idnameage
1张三18
2李四20

idtitleprice
10库里101999
20詹姆斯131999

我们可以开另一张结构化表来将两表联系起来:

iduesr_iditem_id
1110
2120

(2)NoSQL是非关系型的
将上述表达的方式按照document格式来存储,即:

{id: 1name: "张三"orders: [{id: 1,item: {id: 10, title: "库里10", price: 1999}},{id: 2,item: {id: 20, title: "詹姆斯13", price: 1999}}]
}

这样的方式明显是更为复杂的,数据库本身不会帮忙维护各种各样的关系的。
3、查询方式的不同
(1)SQL查询语法固定,那么可以用相同的语句进行查询,更为方便
(2)NoSQL查询语法不固定(Redis、MongoDB、elasticsearch的查询方式都不一样)
4、事务上的差异
(1)SQL是满足ACID特性的
(2)NoSQL要么是无事务的,要么就只能满足基本的一致性,而不满足ACID特性(NoSQL满足base特性)

总结:

SQLNoSQL
数据结构结构化非结构化
数据关联关联的非关联的
查询方式SQL查询非SQL
事务特性ACIDBASE
存储方式磁盘内存(说明查询性能高)
拓展性垂直水平(考虑数据拆分的需求)
使用场景数据结构固定;相关业务对数据安全性、一致性要求较高数据结构不固定;对一致性、安全性要求不高;对查询性能要求高

认识Redis

Redis称为远程词典服务器,是一个基于内存的键值型NoSQL数据库。
特征:
(1)键值型:对value支持不同数据结构,功能丰富
(2)单线程:每个命令具备原子性
(3)低延迟,速度快(基于内存(最重要原因)、IO多路复用、良好的编码)
(4)支持数据持久化(定期存储到磁盘去)
(5)支持主从集群、分片集群
(6)支持多语言客户端

Redis的安装及启动的三种方式

Linux系统与虚拟机准备

首先我们要准备好相应的环境,大家如果早就有相关环境了就可以跳过了,对于Linux相信大家应该还是会知道一些基础知识的,这就够了,完全不会的最好自行去速成一下。
我们需要有Linux操作系统以及虚拟机,我这里用的虚拟机是VMware15,这个虚拟机随便用哪个肯定都没啥影响的,Linux操作系统建议使用比较常见的centOS07(大家也可以用Ubuntu,但是命令跟centOS还是有点不一样的,比如软件下载命令等),可以在官网中下载,这里有下载的一个网盘链接:
centOS7安装——云盘链接
建议用会员号下载,有4.3G的大小。
接着直接打开虚拟机并创建新的虚拟机,并把之前下载的ios文件安装进去,打开即可(如果大家用的是更高版本的虚拟机,也选择简易安装):
在这里插入图片描述
简单配置一下信息,密码设置简单一点就好了,我设置为123456:
在这里插入图片描述
设置一下存放位置:
在这里插入图片描述
设置磁盘大小,改大一点,我这里改成了40:
在这里插入图片描述
接着就创建完成了,等待ios的建议安装完成,到这个页面以后可能要等个十几分钟:
在这里插入图片描述

FinalShell软件准备与远程连接

我们在这里要安装好这个软件,并使用这个软件连接Linux操作系统,这样会给我们的开发提供很大的便捷,例如我们可以很方便的使用FinalShell来将文件上传到Linux的某个目录中,FinalShell安装地址:
FinalShell安装地址
直接一直next,中途改一下路径,然后安装一下就好了。
接着我们进行远程连接,我们先在Linux中输入ifconfig,接着复制ip地址:
在这里插入图片描述
复制完后去FinalShell中建立SSH连接(如果后序步骤在上传文件的时候失败,请将这里的用户名改为root):
在这里插入图片描述
在这里插入图片描述
最后双击后再点击:接受并保存,成功连接:
在这里插入图片描述
之后有关于Linux的操作就可以在这里进行了,更为方便简洁。

Redis安装

安装Redis依赖

因为Redis是基于C语言编写的,所以要先安装Redis所需要的gcc依赖:
在这里插入图片描述
在这里插入图片描述

上传安装包并解压

首先我们要下载好Redis安装包,大家可以自行去官网下载,这里提供一个Redis-6.2.6的网盘下载链接:
Redis-6.2.6网盘链接下载
将下载后的安装包放到/usr/local/src目录:
在这里插入图片描述
进入这个目录并输入:tar -zxvf redis-6.2.6.tar.gz,即可进行解压

进入Redis并运行编译命令

cd redis-6.2.6
make && make install

运行结束就安装完成了,可以在目录**/usr/local/bin**中查看:
在这里插入图片描述
这个目录是默认配置到环境变量的,所以在任意目录都可以运行目录,其中:

redis-cli:redis提供的命令行客户端
redis-server:redis的服务端启动脚本
redis-sentinel:redis的哨兵启动脚本

Redis的启动

默认启动

在任意目录输入redis-server就可以启动Redis了:

redis-server

在这里插入图片描述
这属于前台启动,这种方式会阻塞整个窗口,按住ctrl+c才能停止,并不友好。

指定配置启动

让Redis在后台启动,就需要修改一下Redis配置文件,redis-6.2.6中的redis.conf文件即是配置文件。
1、我们把配置文件备份一下,防止配置出错导致的崩溃:

cp redis.conf redis.conf.bck

2、修改redis.conf文件中的一些配置:

vi redis.conf

我们要修改的主要内容如下:

# 监听地址默认为127.0.0.1,导致只能本地访问,修改位0.0.0.0就可以在任意IP访问
bind 0.0.0.0
# 守护进程设置为yes即可后台运行
daemonize yes
# 设置密码,访问Redis必须输入该密码
requirepass 123456

其他:

# 监听端口
port 6379
# 工作目录,默认为当前目录,也就是redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库的数量,设置为1(默认是16,编号0-15)
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,我们可以指定日志文件名
logfile "redis.log"

上面的内容只需要进入redis.conf以后,利用查找的方式定位以后修改就很快了。

3、启动Redis:
先进入Redis的安装目录,再启动Redis

cd /usr/local/src/redis-6.2.6
redis-server redis.conf

4、查看Redis是否运行,我们只需要查看进程管理器:

ps -ef | grep redis

在这里插入图片描述
5、停止Redis:
停止需要利用kill命令,指定进程号来杀死进程

kill -9 122712

在这里插入图片描述

开机自启

上述的方式都还是比较麻烦的,我们可以通过配置来实现开机自启动。
1、我们新建一个系统服务文件:

vi /etc/systemd/system/redis.service

2、内容如下:

[Unit]
Description=redis-server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true[Install]
WantedBy=multi-user.target

3、重载系统服务:

systemctl daemon-reload

现在我们的Redis成功被我们的系统管理了。

4、启动与Redis状态查看:

# 启动
systemctl start redis
# Redis状态查看
systemctl status redis

在这里插入图片描述
可以看到已经是有效运行了的。
其他命令:

# 停止Redis
systemctl stop redis
# 重启Redis
systemctl restart redis

5、开机自启

systemctl enable redis

在这里插入图片描述
这样我们就实现了开机自启。

Redis客户端

安装完Redis,我们就可以进行Redis的操作,从而实现CRUD了,这里就需要用到Redis客户端,包括:
1、命令行客户端
2、图形化界面客户端
3、编程客户端(后序讲)

Redis命令行客户端

Redis安装完成后就自带了命令行客户端redis-cli,使用方式:

redis-cli [options] [commonds]

常见的options:

-h 127.0.0.1:指定要连接的Redis节点的IP地址,默认为127.0.0.1
-p 6379:指定要连接的Redis节点的端口,默认为6379
-a 123456:指定Redis的访问密码

其中commonds就是Redis的操作命令,如:

ping:与Redis服务器做心跳测试,服务器正常会返回pong

如果不指定commond,则会进入redis-cli的交互控制台。
这里做个实验,将Redis与我们的虚拟机进行连接。
1、首先得到这台虚拟机的IP地址:

ifconfig

在这里插入图片描述
2、接下来就直接利用命令连接到虚拟机即可:
在这里插入图片描述
像打乒乓球一样,ping-pong。
之所以会报warning,是因为-a方式不是太安全,我们也可以先不指定密码,然后利用AUTH来指定用户名和密码(这里没有用户名只有密码):
在这里插入图片描述
接下来就可以对Redis进行各种增删改查了。

Redis的图形化界面客户端(非必要)

GitHub上有人编写了这个图形化界面客户端RedisDesktopManager,但是提供的只是RedisDesktopManager的源码,并没有安装包。
而另有一个大神提供了这个源码编译运行后的安装包,源码更新那么这个安装包也会更新:
Redis图形化界面客户端——安装包
安装很简单,打开就是这样:
在这里插入图片描述
填写相关信息,进行连接:
在这里插入图片描述

如果无法连接那就是Redis的防火墙没关,用这条指令关一下:

systemctl stop firewalld.service

但是这也只是个图形化界面,跟之前学习mysql的时候用到的图形化界面Navicat、sqlyog一个意思,并不是必要的。

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

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

相关文章

利用深度学习图像识别技术实现教室人数识别

引言 在现代教育环境中,高效管理和监控教室成为了一个重要议题。随着人工智能技术的迅猛发展,特别是深度学习和图像识别领域的突破,我们现在可以通过智能系统来自动识别教室内的人数,从而实现更加智能化的教室管理。 深度学习与图…

LeetCode 84. 柱状图中最大的矩形

84. 柱状图中最大的矩形 给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。 求在该柱状图中,能够勾勒出来的矩形的最大面积。 示例 1: 输入:heights [2,1,5,6,2,3] 输出:10 解释…

Spring-IOC综述

文章迁移自语雀。 怎么查看spring的文档 ioc综述 说到spring的ioc,其实就是控制反转,为啥需要控制反转呢,其实是为了功能的增强,如果不用spring, 我们直接使用工厂方法,静态工厂方法, 都是是可以获取到对象的,但是如果需求变了,我们在类的生成时,添加了很多信息,使用工厂就不…

【鸿蒙杂谈①】——鸿蒙基础介绍及应用领域

1.前言 小伙伴们大家好,最近被复习整的痛苦无比,所以今天咱们了解 一点轻松的东西,至于高并发就先放放吧。好了,废话不多说,咱们进入正题。 相信小伙伴们都已经看到了最近鸿蒙的势头了,那鸿蒙究竟是怎么发…

《Linux C编程实战》笔记:实现自己的myshell

ok,考完试成功复活 这次是自己的shell命令程序的示例 流程图: 关键函数 1.void print_prompt() 函数说明:这个函数打印myshell提示符,即“myshell$$”. 2.void get_input(char *buf) 函数说明:获得一条指令&#…

Vue3-32-路由-重定向路由

什么是重定向 路由的重定向 :将匹配到的路由 【替换】 为另一个路由。 redirect : 重定向的关键字。 重定向的特点 1、重定向是路由的直接替换,路由的地址是直接改变的; 2、在没有子路由配置的情况下,重定向的路由可以省略 component 属性的配…

Langchain访问OpenAI ChatGPT API Account deactivated的另类方法,访问跳板机API

笔者曾经写过 ChatGPT OpenAI API请求限制 尝试解决 Account deactivated. Please contact us through our help center at help.openai.com if you need assistance. 结果如何? 没有啥用。目前发现一条曲线救国的方案。 1. 在官方 openai 库中使用 此处为最新Op…

全国计算机等级考试| 二级Python | 真题及解析(10)

一、选择题 1.要实现将实数型变量a的值保留三位小数,以下python可以实现的是( ) A.a%0.001 B.a//0.001 C.round(a,3) D.round(3,a) 2.在Python中要交换变量a和b中的值,应使用的语句组是( )。 A…

思科校园网搭建及配置综合小型实验

思科校园网搭建及配置综合小型实验 实验拓扑配置步骤配置聚合链路配置VTP,vlan域模板第一步 配置二层VLAN第二步 配置生成树第三步 配置相关IP地址第四步 配置DHCP及DHCP中继第五步 配置三层的网关冗余协议 双机热备及OSPF第六步 配置静态路由,NAT地址转换及其他配置…

麒麟云增加计算节点

一、安装基座系统并配置好各项设置 追加的计算节点服务器,安装好系统,把主机名、网络网线(网线要和其他网线插的位置一样)、hosts这些配置好,在所有节点的/etc/hosts里面添加信息 在控制节点添加/kylincloud/multinod…

人工智能趋势报告解读:ai野蛮式生长的背后是机遇还是危机?

近期,Enterprise WordPress发布了生成式人工智能在营销中的应用程度的报告,这是一个人工智能迅猛发展的时代,目前人工智能已经广泛运用到内容创作等领域,可以预见的是人工智能及其扩展应用还将延伸到我们工作与生活中的方方面面。…

springboot自动配置原理

第一步启动类注解 第二步可以看到启动类注解组合了自动配置这个注解(enableAutoConfiguration) 第三步进入这个注解 可以看到里面导入了一个impotSelector这个自动配置的字节码 第四步点进去 可以看到实现了deferredImportSelector这个接口 并且在这个类…

Rockchip平台Android应用预安装功能(基于Android13)

Rockchip平台Android应用预安装功能(基于Android13) 1. 预安装应用类型 Android上的应用预安装功能,主要是指配置产品时,根据厂商要求,将事先准备好的第三方应用预置进Android系统。预安装分为以下几种类型: 安装不可卸载应用安…

阿赵UE学习笔记——6、免费资源获取

阿赵UE学习笔记目录 大家好,我是阿赵。   接下来准备要往UE引擎里面放美术资源了。美术资源可以自己做,不过也有一些免费的资源可以供我们使用的,这里介绍一些获得免费美术资源的方法。 一、Quixel 1、Quixel网站下载 Quixel资源库&#…

LiveGBS流媒体平台GB/T28181常见问题-如何配置快照目录快照存储默认目录目录如何配置

LiveGBS流媒体平台GB/T28181常见问题-如何配置快照目录快照存储默认目录目录如何配置 1、快照目录2、指定快照目录3、搭建GB28181视频直播平台 1、快照目录 部署LiveGBS后, 再查看通道播放后 或是 获取通道快照后,就会在LiveSMS部署的服务器里面存储对应…

【日积月累】Java中 正则表达式

目录 日积月累】Java中 正则表达式 1.前言2.基本语法3.Pattern和Matcher类4.校验的表达式大全5.参考文章所属专区 日积月累 1.前言 正则表达式是一种用于匹配文本模式的语法,它通常与编程语言一起使用。在Java中,正则表达式用于匹配字符串,可以使用Pattern和Matcher类来实…

LeetCode 每日一题 Day 28293031 ||三则模拟||找循环节(hard)

1185. 一周中的第几天 给你一个日期,请你设计一个算法来判断它是对应一周中的哪一天。 输入为三个整数:day、month 和 year,分别表示日、月、年。 您返回的结果必须是这几个值中的一个 {“Sunday”, “Monday”, “Tuesday”, “Wednesday…

修复键盘问题的十种方法,总有一种可以帮到你

坏了的键盘可不是闹着玩的。这就是为什么苹果公司向人们支付395美元,以解决其蝴蝶键盘故障的集体诉讼。但这个问题并不总是那么普遍,所以这通常意味着如果出现问题,你只能靠自己了。 重新启动电脑 你有没有试过反复打开电脑?在你尝试任何随机修复之前,一个简单的重新启动…

RK3568驱动指南|第九篇 设备模型-第99章 注册一个自己的总线实验

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

基于猫群算法优化的Elman神经网络数据预测 - 附代码

基于猫群算法优化的Elman神经网络数据预测 - 附代码 文章目录 基于猫群算法优化的Elman神经网络数据预测 - 附代码1.Elman 神经网络结构2.Elman 神经用络学习过程3.电力负荷预测概述3.1 模型建立 4.基于猫群优化的Elman网络5.测试结果6.参考文献7.Matlab代码 摘要:针…