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是结构化型的存储方式

id name age
1 张三 18
2 李四 20

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

key value
id 1
name 张三
age 18

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

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

id name age
1 张三 18
2 李四 20

id title price
10 库里10 1999
20 詹姆斯13 1999

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

id uesr_id item_id
1 1 10
2 1 20

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

{
	id: 1
	name: "张三"
	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特性)

总结:

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

认识Redis

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

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

Linux系统与虚拟机准备

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

FinalShell软件准备与远程连接

我们在这里要安装好这个软件,并使用这个软件连接Linux操作系统,这样会给我们的开发提供很大的便捷,例如我们可以很方便的使用FinalShell来将文件上传到Linux的某个目录中,FinalShell安装地址:
FinalShell安装地址
直接一直next,中途改一下路径,然后安装一下就好了。
接着我们进行远程连接,我们先在Linux中输入ifconfig,接着复制ip地址:
Redis:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端_第6张图片
复制完后去FinalShell中建立SSH连接(如果后序步骤在上传文件的时候失败,请将这里的用户名改为root):
Redis:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端_第7张图片
Redis:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端_第8张图片
最后双击后再点击:接受并保存,成功连接:

之后有关于Linux的操作就可以在这里进行了,更为方便简洁。

Redis安装

安装Redis依赖

因为Redis是基于C语言编写的,所以要先安装Redis所需要的gcc依赖:
在这里插入图片描述
Redis:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端_第9张图片

上传安装包并解压

首先我们要下载好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:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端_第10张图片
这个目录是默认配置到环境变量的,所以在任意目录都可以运行目录,其中:

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

Redis的启动

默认启动

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

redis-server

Redis:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端_第11张图片
这属于前台启动,这种方式会阻塞整个窗口,按住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:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端_第12张图片
可以看到已经是有效运行了的。
其他命令:

# 停止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

Redis:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端_第13张图片
2、接下来就直接利用命令连接到虚拟机即可:
在这里插入图片描述
像打乒乓球一样,ping-pong。
之所以会报warning,是因为-a方式不是太安全,我们也可以先不指定密码,然后利用AUTH来指定用户名和密码(这里没有用户名只有密码):
在这里插入图片描述
接下来就可以对Redis进行各种增删改查了。

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

GitHub上有人编写了这个图形化界面客户端RedisDesktopManager,但是提供的只是RedisDesktopManager的源码,并没有安装包。
而另有一个大神提供了这个源码编译运行后的安装包,源码更新那么这个安装包也会更新:
Redis图形化界面客户端——安装包
安装很简单,打开就是这样:
Redis:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端_第14张图片
填写相关信息,进行连接:
Redis:原理速成+项目实战——初识Redis、Redis的安装及启动、Redis客户端_第15张图片

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

systemctl stop firewalld.service

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

你可能感兴趣的:(Redis速成,redis,linux)