瑞_Redis_初识Redis(含安装教程)

🙊 前言:本文章为瑞_系列专栏之《Redis》的基础篇的初识Redis章节。由于博主是从B站黑马程序员的《Redis》学习其相关知识,所以本系列专栏主要是针对该课程进行笔记总结和拓展,文中的部分原理及图解等也是来源于黑马提供的资料,特此注明。本文仅供大家交流、学习及研究使用,禁止用于商业用途,违者必究!

关于 VMware 虚拟机安装 Linux 的教程可以参考《瑞_VMware虚拟机安装Linux纯净版(含卸载,图文超详细)》

Ray-Logo

1 初识Redis


  Redis是一种键值型的NoSql数据库,这里有两个关键字:

  • 键值型
  • NoSql

  其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符串、数值、甚至json:

在这里插入图片描述

  NoSql是相对于传统关系型数据库(MySQL)而言,有很大差异的一种数据库。

瑞:NoSQL数据库的代价就是不能处理复杂业务,复杂业务还是得用传统关系型数据库。SQL和NoSQL是互为补充的关系,并不是要取代对方。编程没有对错之分,只有在不同的业务场景下,适合和更适合的区别。

1.1 认识NoSQL

在这里插入图片描述

  NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库


SQL与NoSQL的区别主要有以下4点
1.1.1 结构化与非结构化

SQL中的S代表:结构化( Structured)

  传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束:

在这里插入图片描述

瑞:表的结构往往不建议修改,否则在开发过程中很容易导致数据出现不可预测的意外,如锁表、数据不可用等,造成的影响非常大。

  而NoSql则对数据库格式没有严格约束,往往形式松散,自由。

瑞:没有严格约束不代表没有约束,如Redis键值型数据库中常见的数据类型有:键值型(Redis)、文档型(MongoDB)、列类型(HBase)、图格式Graph(Neo4j)等。

1.1.2 关联和非关联

关联的(Relational)

  传统数据库的表与表之间往往存在关联,例如外键,如下有用户表、商品表、订单表,在订单表中的user_iditem_id就通过外键和用户表、商品表建立起了关系

在这里插入图片描述

  而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合:

{
  id: 1,
  name: "张三",
  orders: [
    {
       id: 1,
       item: {
	      id: 10, title: "荣耀6", price: 4999
       }
    },
    {
       id: 2,
       item: {
	      id: 20, title: "小米11", price: 3999
       }
    }
  ]
}

瑞:如上Json文档嵌套的形式记录数据,此处要维护“张三”的订单与商品“荣耀”和“小米11”的关系,不得不冗余的将这两个商品保存在张三的订单文档中,不够优雅。所以还是建议用业务来维护关联关系,即只需要存储相应的主键而不是整个商品信息数据

1.1.3 查询方式

  传统关系型数据库会基于Sql语句做查询,语法有统一标准;

关系型:SQL:SELECT id,name FEOM tb_user WHERE id = 1

  而不同的非关系数据库查询语法差异极大,五花八门各种各样。

非关系型
	Redis:get user:1
	MongoDB:db.users.find({_id:1})
	elasticsearch:GET http://localhost:9200/users/1
1.1.4 事务

  传统关系型数据库能满足事务ACID的原则。

  而非关系型数据库往往不支持事务,或者不能严格保证ACID的特性,只能实现基本的一致性。

瑞:

  • A:原子性(Atomicity)不可再分割
  • C:一致性(Consistency) 要么都成功,要么都失败
  • I:持久性(lsolation)事务一旦提交则不可逆,被持久化到数据库中
  • D:隔离性(Durability)多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰
1.1.5 总结
SQLNoSQL
数据结构结构化非结构化
数据关联关联的无关联的
查询方式SQL查询非SQL
事务特性ACIDBASE
存储方式磁盘内存
拓展性垂直水平
使用场景1)数据结构固定
2)相关业务对数据安全性、一致性要求较高
1)数据结构不固定
2)对一致性、安全性要求不高
3)对性能要求
  • 存储方式

    • 关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响
    • 非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能非常高
  • 扩展性

    • 关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。
    • 非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。称为水平扩展。
    • 关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦

瑞:非关系型数据库的查询效率高、天然支持分布式设计。
  所以如果数据结果不太稳定,经常变更,业务对安全性、一致性要求不是很高的情况下,就适合使用非关系型数据库。
  而如果数据结构相对固定,业务对安全性、一致性要求高,则建议使用关系型数据库。
  实际开发中,要根据业务需求灵活选择,当然两者也是可以结合使用的。

1.2 认识Redis

1.2.1 介绍

  Redis诞生于2009年全称是Remote Dictionary Server 远程词典服务器,是一个基于内存的键值型NoSQL数据库。

瑞:词典服务器,是因为Redis是键值型的非关系型数据库,根据key找value,就类似于词典的用法。

  作者:Antirez

  Redis的官方网站地址https://redis.io/

1.2.2 特征
  • 键值(key-value)型,value支持多种不同数据结构,功能丰富
  • 单线程,每个命令具备原子性
  • 低延迟,速度快(基于内存、IO多路复用、良好的编码)
  • 支持数据持久化
  • 支持主从集群、分片集群
  • 支持多语言客户端

瑞:Redis在6以上的版本中的多线程,指的是对网络请求处理是多线程处理,而核心命令的执行仍然是单线程的。虽然Redis是单线程的,但是效率很高,毕竟Redis是基于内存而MySQL是基于磁盘,这个效率差异实在太大了

1.2.3 优势
  • 性能极高:Redis能读的速度是110000次/s,写的速度是81000次/s。
  • 丰富的数据类型:Redis支持二进制案例的Strings、Lists、 Hashes、Sets及Ordered Sets数据类型操作。
  • 原子性:Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性-:Redis还支持 publish/subscribe,通知, key过期等等特性。

1.3 安装Redis ★★★

Redis的官方网站地址https://redis.io/

1.3.1 Linux安装Redis(.tar.gz)

  大多数企业都是基于Linux服务器来部署项目,而且Redis官方也没有提供Windows版本的安装包,而是微软编译的Windows版本。因此本系列是基于Linux系统安装Redis

瑞:Redis的原作者根本就没有编写 Windows 版的 Redis ,所以学习的时候还是要以官方版的为准

Linux版本为CentOS 7 64位

瑞:关于 VMware 虚拟机安装 Linux 的教程可以参考《瑞_VMware虚拟机安装Linux纯净版(含卸载,图文超详细)》

1.3.1.0 资源准备

  redis-7.2.4.tar.gz的官方下载地址⬇️
  https://redis.io/download/

瑞:随着时间的推移,官方最新版可能不是7.2.4。博主使用的是redis-6.2.6.tar.gz,某度网盘需要自取
链接:https://pan.baidu.com/s/128hTas10Dc7NxXpfi-hdFw?pwd=8n6a
提取码:8n6a

在这里插入图片描述

  为了方便操作Linux,建议使用一些远程连接工具,博主使用的是MobaXterm,当然像XShell之类的也行

瑞:MobaXterm的官方下载链接:https://mobaxterm.mobatek.net/download.html
选择免费版(Free)的下载即可,直接下载的就是exe可执行文件,双击就可以直接使用

  MobaXterm与虚拟机建立seesion

  1️⃣ 在VM中输入ip addr指令查看虚拟机IP地址(博主为192.168.13.128)

在这里插入图片描述

  2️⃣ 打开MobaXterm选择Session,新对话框中选择SSH,然后将虚拟机IP输入,最后点击OK即可

在这里插入图片描述
在这里插入图片描述

1.3.1.1 安装Redis依赖

  Redis是基于C语言编写的,因此首先需要安装Redis所需要的gcc依赖

  将以下命令复制到远程连接工具的命令窗口中(鼠标右键粘贴),回车执行

yum install -y gcc tcl

在这里插入图片描述

  看到“完毕”则安装成功,如下图所示

在这里插入图片描述

1.3.1.2 上传安装包并解压

  1️⃣ 将资源准备提供的Redis安装包(redis-6.2.6.tar.gz)上传到虚拟机的任意目录(建议放在/usr/local/src目录,这个目录下一般用于存放安装文件)

  如果使用MobaXterm,直接在windows将压缩包使用鼠标拖拽过来即可

在这里插入图片描述

  2️⃣ 在MobaXterm中执行命令cd /usr/local/src/切换控制台工作路径,然后执行tar -zxvf redis-6.2.6.tar.gz进行解压

在这里插入图片描述

  3️⃣ 执行cd redis-6.2.6命令进入redis目录

在这里插入图片描述

  4️⃣ 执行make && make install命令进行运行编译(此过程较长)

在这里插入图片描述

  5️⃣ 默认的安装路径是在 /usr/local/bin目录下,执行ll /usr/local/bin/命令,可以看到如下图所示,则安装成功

在这里插入图片描述

该目录以及默认配置到环境变量,因此可以在任意目录下运行这些命令。其中:

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

  Linux中redis的启动方式有很多种,例如:
  1️⃣ 默认启动
  2️⃣ 指定配置启动
  3️⃣ 开机自启

1.3.1.4.1 默认启动

  安装完成后,在任意目录输入redis-server命令即可启动Redis

在这里插入图片描述

瑞:默认启动属于前台启动,会阻塞整个会话窗口,窗口关闭或者按下CTRL + C则Redis停止。所以不推荐使用。


1.3.1.4.2 指定配置启动

  如果要让Redis以后台方式启动,则必须修改Redis配置文件,就在我们之前解压的redis安装包下(/usr/local/src/redis-6.2.6),名字叫redis.conf

在这里插入图片描述

瑞:凡是涉及配置文件修改的操作,建议在修改前进行备份,这是一个良好的习惯

  执行cp /usr/local/src/redis-6.2.6/redis.conf /usr/local/src/redis-6.2.6/redis.conf.bck命令将这个配置文件备份

  然后修改redis.conf文件中的一些配置

# 监听的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行
daemonize yes 
# 密码,设置后访问Redis必须输入密码
requirepass 123456

  如果是使用MobaXterm,选择该配置文件,双击即可编辑,支持ctrl + F查找,修改完之后一定要记得保存(第一次会有弹窗,选择Yes to all即可),如果已经启动了Redis则需要重启Redis服务,配置才能生效

在这里插入图片描述

  Redis的其它常见配置:

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

瑞:修改了配置文件后,如果已经启动了Redis,则需要重启Redis服务,配置才能生效


  启动Redis

# 进入redis安装目录 
cd /usr/local/src/redis-6.2.6
# 启动
redis-server redis.conf

  通过ps -ef | grep redis命名查看Redis进程,判断是否启动成功,如下14408进程的端口号6379是Redis服务的进程,则启动成功

在这里插入图片描述


  停止Redis服务

  方法1️⃣ 使用kill -9 进程ID命令杀死Redis进程

  方法2️⃣ 利用redis-cli来执行 shutdown 命令

# 利用redis-cli来执行 shutdown 命令,即可停止 Redis 服务,
# 因为之前配置了密码,因此需要通过 -a 来指定密码
redis-cli -a 123456 shutdown

在这里插入图片描述


1.3.1.4.3 开机自启

通过配置来实现开机自启

  新建一个系统服务文件:

vi /etc/systemd/system/redis.service

  内容如下⬇️

[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

  如果使用MobaXterm则可以直接到该目录下直接新建文件redis.service

在这里插入图片描述
  然后使用右键选择该文件,点击Open with default text editor将内容复制进去,并保存退出

在这里插入图片描述

  然后使用下面命令重新加载系统服务

systemctl daemon-reload

  现在,我们可以用下面这组命令来操作redis了

# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis

  执行下面的命令,可以让redis开机自启

systemctl enable redis

1.3.2 Windows安装Redis(.msi)
1.3.2.0 资源准备

  点击链接,直接下载最新版本(注意选择.msi格式的安装版本)

瑞:Windows 环境下的 Redis 的 github 链接:https://github.com/MicrosoftArchive/redis/releases
注意:Redis 原作者并没有编写 Windows 版本的 Redis ,目前开源的 Windows 环境下的 Redis 没有32位

在这里插入图片描述

  由于该链接是 github 外网链接,如果加载不出来的小伙伴,可以用博主提供的某度网盘链接(版本:Redis-x64-3.0.504.msi)

	链接:https://pan.baidu.com/s/1e29fjmLn6ku_jcF-SHxUMw?pwd=foqz 
	提取码:foqz

在这里插入图片描述

1.3.2.1 安装步骤

  1️⃣ 双击运行.msi的安装包,点击next,一直next

  2️⃣ 直到下面界面,勾选上再next

在这里插入图片描述

  3️⃣ 到这一步选择端口6379,然后next(不用担心,端口号后续可通过配置文件修改)

在这里插入图片描述

  4️⃣ 选择最大缓存容量,点击next(后续可通过配置文件修改)

在这里插入图片描述
  5️⃣ 点击finish,配置结束。接下来点击install进行安装

  6️⃣ 安装完毕后,进入redis安装目录找到配置文件,注意配置文件是redis.windows-service.conf,不是❌redis.windows.conf❌,后者是以非系统服务方式启动程序使用的配置文件(注意区分)

在这里插入图片描述

  7️⃣ 在配置文件(redis.windows-service.conf)中搜索requirepass foobared,在其后面追加一行,参考输入requirepass 123456。

瑞:本步骤是设置访问Redis时所需的密码,一般测试情况下可以不用设定密码。不过,即使是作为本地访问,也建议设定一个密码。此处设置123456为仅用于步骤演示,具体密码请自定义设置(后续仍然可修改),记得保存文件后再退出。

在这里插入图片描述

  8️⃣ 使用任务管理器找到Redis名称的服务,查看启动情况。如未启动,则手动启动。正常情况下,服务应该正常启动并运行了,但是因为前面修改过配置文件,需要重启服务,切记,否则配置不生效

在这里插入图片描述


安装结束
1.3.2.2 测试

  1️⃣ 打开cmd命令窗口,输入redis-cli注意中间没有空格等其它字符,回车执行。

  redis-cli是客户端程序,如下图正常提示(显示配置的端口号6379),则表示服务已经启动。

127.0.0.1:6379>redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379>auth 123456
127.0.0.1:6379>ping
127.0.0.1:6379>info server

在这里插入图片描述

  2️⃣ 使用服务前需要先通过密码验证。输入auth 123456并回车(注意123456是之前设定的密码)。返回提示OK表示验证通过。后续可以自行验证set和get等命令,如上图,则说明安装成功。

C:\Users\用户名>redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set mytest "ray"
OK
127.0.0.1:6379> get mytest
"ray"
127.0.0.1:6379>
1.3.3.3 附:启动脚本文件

  创建一个.bat的脚本文件,内容如下⬇️

@echo off
title ray_redis_run
redis-cli -h 127.0.0.1 -p 6379 -a 123456
pause;

  注意替换为你安装的 Redis 的 ip、端口、密码,双击运行该脚本文件,如下则成功:

在这里插入图片描述

1.3.3 Windows安装Redis(.zip)
1.3.3.0 资源准备

  点击链接,直接下载最新版本(注意选择.zip格式的安装版本)

瑞:Windows 环境下的 Redis 的 github 链接:https://github.com/MicrosoftArchive/redis/releases
注意:Redis 原作者并没有编写 Windows 版本的 Redis ,目前开源的 Windows 环境下的 Redis 没有32位

在这里插入图片描述

  由于该链接是 github 外网链接,如果加载不出来的小伙伴,可以用博主提供的某度网盘链接(版本:Redis-x64-3.0.504.zip,大小:5M左右)

链接:https://pan.baidu.com/s/1RVisCZQVT6dfTZmxtERJDg?pwd=rhtr 
提取码:rhtr

在这里插入图片描述

1.3.3.1 安装步骤

  1️⃣ 解压.zip压缩包,在该路径(本例中为"F:\soft\Redis\Redis30504\Redis-x64-3.0.504")下输入cmd打开命令窗口

在这里插入图片描述

  2️⃣ 输入启动redis-server redis.windows.conf命令启动Redis服务,如下图表示启动成功

在这里插入图片描述

瑞:在执行下面步骤之前,有些小伙伴会因为权限不够失败(无创建文件夹权限之类的原因),这种是不会提示的,可以在"F:\soft\Redis\Redis30504\Redis-x64-3.0.504"目录下新建一个名为Logs的文件夹,再执行下面的步骤(如果是用博主提供的某度网盘链接下载的zip则不需要处理)

在这里插入图片描述

  3️⃣ 把redis注册成windows服务(这样就不需要一直开启Redis服务的cmd窗口)。关闭第2步打开的Redis服务的cmd窗口,再打开该路径下新的cmd窗口(即再执行一次第一步),输入redis-server.exe --service-install redis.windows-service.conf --loglevel verbose命令进行注册Windows服务。执行命令成功后,在windows服务会出现名为Redis的服务,此时是已停止状态。

瑞:注意要关闭第2步打开的Redis服务,不然可能会出现注册失败的情况

在这里插入图片描述

  4️⃣ 将该服务状态修改为启动后,进入redis安装目录找到配置文件,注意配置文件是redis.windows-service.conf,不是❌redis.windows.conf❌,后者是以非系统服务方式启动程序使用的配置文件(注意区分)

在这里插入图片描述

  5️⃣ 在配置文件(redis.windows-service.conf)中搜索requirepass foobared,在其后面追加一行,参考输入requirepass 123456。

瑞:本步骤是设置访问Redis时所需的密码,一般测试情况下可以不用设定密码。不过,即使是作为本地访问,也建议设定一个密码。此处设置123456为仅用于步骤演示,具体密码请自定义设置(后续仍然可修改),记得保存文件后再退出。

在这里插入图片描述

  6️⃣ 使用任务管理器找到Redis名称的服务,查看启动情况。如未启动,则手动启动。正常情况下,服务应该正常启动并运行了,但是因为前面修改过配置文件,需要重启服务,切记,否则配置不生效

在这里插入图片描述

下次开机就会自启动Redis服务,使用博主提供的.bat脚本或redis-cli即可直接访问本机Redis


安装结束
1.3.3.2 测试

  1️⃣ 打开cmd命令窗口,输入redis-cli注意中间没有空格等其它字符,回车执行。

  redis-cli是客户端程序,如下图正常提示(显示配置的端口号6379),则表示服务已经启动。

127.0.0.1:6379>redis-cli -h 127.0.0.1 -p 6379
127.0.0.1:6379>auth 123456
127.0.0.1:6379>ping
127.0.0.1:6379>info server

在这里插入图片描述

  2️⃣ 使用服务前需要先通过密码验证。输入auth 123456并回车(注意123456是之前设定的密码)。返回提示OK表示验证通过。后续可以自行验证set和get等命令,如上图,则说明安装成功。

C:\Users\用户名>redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set mytest "ray"
OK
127.0.0.1:6379> get mytest
"ray"
127.0.0.1:6379>
1.3.3.3 附:启动脚本文件

  创建一个.bat的脚本文件,内容如下⬇️

@echo off
title ray_redis_run
redis-cli -h 127.0.0.1 -p 6379 -a 123456
pause;

  注意替换为你安装的 Redis 的 ip、端口、密码,双击运行该脚本文件,如下则成功:

在这里插入图片描述

1.3.4 附:Windows卸载Redis

  1️⃣ 进入Redis的安装目录(如"F:\soft\Redis\Redis30504\Redis-x64-3.0.504"),输入cmd打开命令窗口

在这里插入图片描述

  2️⃣ 执行redis-server --service-uninstall命令卸载redis服务,如下图即卸载Redis服务成功

在这里插入图片描述

  3️⃣ 最后将redis文件夹直接删除即完成卸载




本文是博主的粗浅理解,可能存在一些错误或不完善之处,如有遗漏或错误欢迎各位补充,谢谢

  如果觉得这篇文章对您有所帮助的话,请动动小手点波关注💗,你的点赞👍收藏⭐️转发🔗评论📝都是对博主最好的支持~


  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

瑞486

你的点赞评论收藏才更是动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值