Git and Linux and Redis

Git课程介绍

Git介绍

简介:Git是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。通过Git 仓库来存储和管理这些文件,

Git仓库分为两种:

  • 本地仓库:开发人员自己电脑上的Git仓库
  • 远程仓库:远程服务器上的Git 仓库
    在这里插入图片描述

功能介绍:代码回溯、版本切换、多人协作、远程备份

下载地址:https://git-scm.com/download

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FeZveL9w-1675928880040)(.\img\image-20230131111329039.png)]

Git代码托管服务

在这里插入图片描述

使用码云代码托管服务

使用码云的操作流程如下:

1、注册码云账号

2、登录码云

3、创建远程仓库

4、邀请其他用户成为仓库成员

怎么操作自己百度

Git常用命令

Git 全局设置

当安装Git后首先要做的事情是设置用户名称和email地址。这是非常重要的,因为每次Git提交都会使用该用户信息。

在Git命令行中执行下面命令:

设置用户信息:

git config --global user.name "ZhuXL"  --ZhuXL 随便指定
git config --global user.email "Zxl1811@163.com" --Zxl1811@163.com 随便指定

查看配置信息:

git config --list

注意:上面设置的user.name和user.email并不是我们在注册码云账号时使用的用户名和邮箱,此处可以任意设置。

获取Git仓库

要使用Git对我们的代码进行版本控制,首先需要获得Git仓库。

获取Git仓库通常有两种方式:

  • ​ 在本地初始化一个Git仓库(不常用)
    在这里插入图片描述

  • ​ 从远程仓库克隆(常用)

1.在任意目录下创建一个空目录,作为本地Git仓库 进入目录中点击右键打开Git bash窗口
2.到自己创建的远程仓库地址:https://gitee.com/flipped1/reggie.git 并执行命令
git clone https://gitee.com/flipped1/reggie.git

注意:仓库与仓库之间不能嵌套,只能是平级关系

工作区暂存区、版本库概念

版本库:前面看到的.git隐藏文件夹就是版本库,版本库中存储了很多配置信息、日志信息和文件版本信息等工作区:包含.git文件夹的目录就是工作区,也称为工作目录,主要用于存放开发的代码

暂存区: .git文件夹中有很多文件,其中有一个index文件就是暂存区,也可以叫做stage。暂存区是一个临时保存修改
文件的地方
在这里插入图片描述

Git工作区中文件的状态

Git工作区中的文件存在两种状态:

  1. untracked 未跟踪(未梭纳入版本控制)

  2. tracked 已跟踪(被纳入版本控制)

    ​ 1) Unmodified 未修改状态
    ​ 2) Modified 已修改状态
    ​ 3) Staged 已暂存状态

注意:这些文件的状态会随着我们执行Git的命令发生变化

本地仓库操作
git status 										查看文件状态
git add	[文件名]	  		  			  		  将文件的修改加入暂存区
git reset [文件名] 		  			  		  将暂存区的文件取消暂存或者是切换到指定版本
git commit -m "提交注释" [文件名] 				    将暂存区的文件修改提交到版本库	
git log											查看日志
git reset --hard [查看日志展示的编码]	  		  回滚版本
远程仓库操作
[shortName]:查看远程仓库命令出现的编码 一般都是origin
[name]:分支名称
[url]:远程仓库地址

git remote	-v								查看远程仓库
git remote add [shortName] [url]			添加远程仓库(本地仓库跟远程仓库连接)
git clone [url]								从远程仓库克隆

git pull [url]								从远程仓库拉取1
git pull [shortName] [name]					从远程仓库拉取2

git push [url]								推送到远程仓库1(先把文件保存到缓存区在提交到版本库最后才能推送到远程仓库)
git push [shortName] [name]					推送到远程仓库2


注意: 如果当前本地仓库不是从远程仓库克隆,而是本地创建的仓库,并且仓库中存在文件,此时再从远程仓库拉取文件的时候会报错 (fatal: refusing to merge unrelated histories ) 就是两个仓库文件冲突了,合并失败

解决此问题可以在git pull命令后加入参数 --allow-unrelated-histories

分支操作

简介:分支是Git使用过程中非常重要的概念。使用分支意味着你可以把你的工作从开发主线上分离开来,以免影响开发主线。同一个仓库可以有多个分支,各个分支相互独立,互不干扰。

通过git init命令创建本地仓库时默认会创建一个master分支。

[shortName]:查看远程仓库命令出现的编码 一般都是origin
[name]:分支名称

git branch										查看本地分支
git branch -r									查看远程仓库分支
git branch -a									查看远程仓库分支和本地仓库分支
git branch [name]								创建分支
git checkout [name]								切换分支
git push [shortName] [name]						推送至远程仓库分支
git merge [name]								合并分支
标签操作

不常用,略。。。。。

在IDEA中使用Git

配置Git

在这里插入图片描述

获取仓库

在这里插入图片描述

本地仓库操作

代码加入暂存区。暂存区的代码提交到版本库、查看日志等 略。。。。

远程仓库操作

提交代码,拉取代码 略。。。。

注意:

1.拉取代码的时候提示无法拉取,master没有跟踪的分支。需要在弹出的框中配置master分支

2.本地创建的仓库连接远程仓库需要在IDEA里把分支设置成远程Master分支,否则无法提交

分支操作

查看分支、切换分支

在这里插入图片描述

推送分支到远程在这里插入图片描述
合并分支

在这里插入图片描述

Linux课程介绍

Linux简介

Linux是一套免费使用和自由传播的操作系统

Linux安装

Linux系统的安装方式:

  • 物理机安装:直接将操作系统安装到服务器硬件上虚拟机
  • 安装:通过虚拟机软件安装

虚拟机(Virtual Machine) 指通过软件模拟的具有完整硬件系统功能、运行在完全隔离环境中的完整计算机系统。

常用虚拟机软件:

  • VMwareVirtualBox
  • VMLite WorkStation
  • Qemu
  • Hopeddotvos

VMware17虚拟机下载地址:https://download3.vmware.com/software/WKST-1700-WIN/VMware-workstation-full-17.0.0-20800274.exe

安装完启动初始化网卡(必须)
在这里插入图片描述

安装SSH连接工具

SSH ( Secure Shell),建立在应用层基础上的安全协议

常用的SSH连接工具:

  • putty
  • secureCRT·
  • xshell
  • finalshell
  • MobaXterm

通过SSH连接工具就可以实现从本地连接到远程的Linux服务器

此处用的MobaXterm 下载安装略。。。

创建一个连接

在这里插入图片描述

在这里插入图片描述

显示此页面表示连接成功

在这里插入图片描述

Linux常用命令

基础命令
ls					查看当前目录下的内容
pwd					查看当前所在目录
cd [目录名]		  切换目录	
touch [文件名]		  如果文件不存在新建文件	
mkdir [目录名]		  创建目录
rm [文件名]		  删除指定文件
rmdir [目录名]		  删除指定目录
cd ..				返回上级目录
cd /				返回根目录
cd user/local 		切换到user下面的local目录

使用技巧:
Tab键自动补全
连续两次Tab键,给出操作提示
使用上下箭头快速调出曾经使用过的命令
使用clear命令或者Ctrl+l快捷键实现清屏

文件目录操作命令
ls:查看当前目录下的内容
ls -a				显示所有文件及目录(.开头的隐藏文件也会列出)
ls -l				除文件名称外,同时将文件型态(d表示目录,-表示文件)、权限、拥有者、文件大小等信息详细列出
ls -a -l			组合
---------------------------------------------------------------------------------------------------------

cd:用于切换当前工作目录进入指定目录
cd .				表示当前所在目录
cd ..				返回上级目录
cd /				返回根目录
cd ~				切换到用户的home目录
cd user/local 		切换到user下面的local目录
---------------------------------------------------------------------------------------------------------

cat:查看文件内容
cat 1.txt				查看1.txt的内容
cat /etc/profile		查看/etc目录下的profile文件内容
---------------------------------------------------------------------------------------------------------
    
mkdir:创建目录
mkdir itcast				在当前目录下,建立一个名为itcast的子目录
mkdir -p itcast/test		在工作目录下的itcast目录中建立一个名为test的子目录,若itcast目录不存在,则建立一个
---------------------------------------------------------------------------------------------------------

rmdir:删除目录
rmdir itcast					删除名为itcast的空目录
rmdir -p itcast/test			删除itcast目录中名为test的子目录,若test目录删除后itcast目录变为空目录则也被删除
rmdir itcast*					删除名称以itcast开始的空目录
---------------------------------------------------------------------------------------------------------
    
rm:删除文件或者目录
rm -r itcast/					删除名为itcast的目录和目录中所有文件,删除前需确认
rm -rf itcast/					无需确认,直接删除名为itcast的目录和目录中所有文件
rm -f hello.txt					无需确认,直接删除hello.txt文件
---------------------------------------------------------------------------------------------------------
    

拷贝移动命令
cp:用于复制文件或目录
	语法:cp[-r]source dest
	-r:如果复制的是目录需要使用此选项,此时将复制该目录下所有的子目录和文件
cp hello.txt itcast					将hello.txt复制到itcast目录中
cp hello.txt itcast/hi.txt			将hello.txt复制到itcast目录中并改名为hi.txt
cp hello.txt hi.txt					将hello.txt复制到当前目录,并改名为hi.txt
cp -r itcast itheima				将itcast目录和目录下所有文件复制到itheima目录下
cp -r itcast/* itheima				将itcast目录下所有文件复制到itheima目录下
---------------------------------------------------------------------------------------------------------

mv:为文件或目录改名、或将文件或目录移动到其它位置
mv hello.txt hi.txt						将hello.txt改名为hi.txt
mv hi.txt itheima						将文件hi.txt移动到itheima目录中
mv hi.txt itheima/hello.txt				将hi.txt移动到itheima目录中,并改名为hello.txt
mv itcast/ itheima/						如果itheima目录不存在,将itcast目录改名为itheima
mv itcast/ itheima/						如果itheima目录存在,将itcast目录移动到itheima目录中


打包压缩命令
tar:对文件进行打包、解包、压缩、解压
    语法:tar [-zcxvf] fileName [files]
    包文件后缀为.tar表示只是完成了打包,并没有压缩
    包文件后缀为.tar.gz表示打包的同时还进行了压缩
    -z:	z代表的是gzip,通过gzip命令处理文件,gzip可以对文件压缩或者解压
    -c:	c代表的是create,即创建新的包文件
	-×:	×代表的是extract,实现从包文件中还原文件
	-v: v代表的是verbose,显示命令的执行过程
	-f:	f代表的是file,用于指定包文件的名称
	
tar -cvf testTar2.tar testTar				把testTar目录打包,打包后的名称为testTar2.tar
tar -cvf testTar2.tar ./*					把当前目录下所有文件打包,打包后的名称为testTar2.tar
tar -zcvf testTar2.tar.gz testTar			把testTar目录打包并且压缩,名称为testTar2.tar.gz
tar -zcvf testTar2.tar.gz ./*				把当前目录下所有文件打包并且压缩,名称为testTar2.tar.gz
tar -xvf testTar.tar						把testTar.tar包解开(注意并不是解压)
tar -zxvf testTar.tar.gz					把testTar.tar.gz压缩包解压
tar -zxvf testTar.tar.gz -C /user/local		把testTar.tar.gz压缩包解压并放在/user/local目录下


-----------------------------------------------------------------------------------------------

安装压缩zip环境			yum install zip
安装解压zip环境			yum install unzip


zip 文件名.zip					  压缩文件
unzip  文件名.zip				  解压文件到当前目录
unzip 文件名.zip -d /all		  解压文件到指定目录
zip test.zip *.java			    将所有后缀为.java文件压缩为zip
文本编辑命令

vim的三种模式:

  • 命令模式
    • 输入vim【文件名】进入命令模式,此模式下可以查看文件内容,移动光标。
  • 插入模式
    • 在命令模式下按【i、a、o】任意一个进入编辑模式,此模式下可以编辑文件内容。
  • 底行模式
    • 在命令模式下按【:、/】任意一个进入底行模式,该模式对文件内容进行查找、保存。
说明:
1、vim是从vi发展来的一个功能更加强大的文本编辑工具,在编辑文件时可以对文本内容进行着色方便我们对文件进行编辑处理,所以实际工作中vim更加常用。
2、要使用vim命令,需要我们自己完成安装。可以使用下面的命令来完成安装:yum install vim
vi [文件名] /vim [文件名] 			编辑文件(进入文件编辑界面)
进入文件编辑界面:
按i,在光标前开始编辑
按a,在光标后开始编辑
按o,在当前行的下一行开始编辑
按u, 撤销之前的操作

编辑完之后按esc
输入  :q! 不保存退出
输入  :wq 保存退出
输入	:/world 从当前光标处,向上查找world关键字
输入	:?world 从当前光标处,向后查找world关键字
输入	:/port   快速定位关键字位置
输入	:set nu 显示行号
    
查找命令
find:在指定目录下查找文件
find . -name "*.java"					在当前目录及其子目录下查找.java结尾文件
find itcast/ -name "*.java"/itcast目录及其子目录下查找.java结尾的文件
---------------------------------------------------------------------------------------------------------

grep:从指定文件中查找指定的文本内容
grep Hello Helloworld.java				查找Helloworld.java文件中出现的Hello字符串的位置
grep hello *.java 						查找当前目录中所有java结尾的文件中包含hello字符串的位置


Linux软件安装

安装JDK

操作步骤:

1、使用FinalShell自带的上传工具将jdk的二进制发布包上传到 Linux jdk-8u171-linux-x64.tar.gz

2、解压安装包,命令为tar -zxvf jdk-8u171-linux-x64.tar.gz -C/usr/local

3、配置环境变量,使用vim命令修改etc/profile文件(切换到local目录下: cd /usr/local 输入:vim etc/profile),在文件末尾加入如下配置:

​ JAVA_HOME=/usr/local/jdk1.8.0_171

​ PATH=$ JAVA_HOME/bin:$PATH

4、重新加载profile文件,使更改的配置立即生效,命令为source /etc/profile

5、检查安装是否成功,命令为java -version,出现版本号表示安装成功

安装Tomcat

1、将Tomcat的二进制发布包上传到Linux apache-tomcat-7.0.57.tar.gz

2、解压安装包,命令为tar -zxvf apache-tomcat-7.0.57.tar.gz -C/usr/local

3、进入Tomcat的bin目录启动服务,命令为sh startup.sh或者./startup.sh

启动Tomcat

进入Tomcat的bin目录启动服务,命令为sh startup.sh或者./startup.sh

验证Tomcat

验证Tomcat启动是否成功,有多种方式:

查看启动日志:

more /usr/local/apache-tomcat-7.0.57/logs/catalina.out

tail -50 /usr/local/apache-tomcat-7.0.57/logs/catalina.out

查看进程: ps -ef | grep tomcat

注意:

  • ps命令是linux下非常强大的进程查看命令,通过 ps -ef 可以查看当前运行的所有进程的详细信息
  • “I”在Linux中称为管道符,可以将前一个命令的结果输出给后一个命令作为输入
  • 使用 ps 命令查看进程时,经常配合管道符和查找命令 grep 一起使用,来查看特定进程

验证:浏览器输入:http://ip地址:端口号/ 测试是否能访问(未关闭防火墙应该无法访问)

关闭防火墙再次访问,此时成功进入tomcat官网页面

防火墙命令
查看防火墙状态(systemctl status firewalld、firewall-cmd --state)
暂时关闭防火墙(systemctl stop firewalld)
永久关闭防火墙(systemctl disable firewalld)
开启防火墙(systemctl start firewalld)
开放指定端口(firewall-cmd --zone=public --add-port=8080/tcp --permanent)    需要配合(firewall-cmd --reload)使用
关闭指定端口(firewall-cmd --zone=public --remove-port=8080/tcp --permanent) 需要配合(firewall-cmd --reload)使用
立即生效(firewall-cmd --reload)
查看开放的端口(firewall-cmd --zone=public --list-ports)

停止Tomcat

运行Tomcat的bin目录中提供的停止服务的脚本文件shutdawn.sh

  • sh shutdown.sh
  • ./shutdown.sh

验证:浏览器输入:http://ip地址:端口号/ 测试是否能访问(若服务已经关闭,则无法访问)

安装Mysql

1.检测当前系统中是否安装MySQL数据库

如果当前系统中已经安装有MySQL数据库,安装将失败。CentOS7自带mariadb(也是数据库),与MySQL数据库冲突

rpm -qa						查询当前系统中安装的所有软件
rpm -qal grep mysql			查询当前系统中安装的名称带mysql的软件
rpm -qal grep mariadb		查询当前系统中安装的名称带mariadb的软件

2.卸载已经安装的冲突软件

rpm -e --nodeps 软件名称			卸载软件
rpm -e --nodeps mariadb-libs-5.5.60-1.el7_5.x86_64

3.将资料中提供的安装包上传Linux并解压

mkdir /usr/local/mysql
tar -zxvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar.gz -C/usr/local/mysql
解压完之后得到6个安装包

4.按照顺序安装安装包

rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
yum install net-tools
rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

说明1:安装过程中提示缺少net-tools依赖,使用yum安装
说明2:可以通过指令升级现有软件及系统内核
yum update

5.启动Mysql

systemctl status mysqld				查看mysql服务状态
systemctl start mysqld				启动mysql服务
    
netstat -tunlp						查看已经启动的服务 
netstat -tunlp l grep mysql			查找mysql服务
ps-ef l grep mysql					查看mysql进程
    

说明:可以设置开机时启动mysql服务,避兔每次开机启动mysql

systemctl enable mysqld				开机启动mysql服务

6.登陆Mysql,查看临时密码

cat /var/log/mysqld.log			查看文件内容
cat /var/log/mysqld.log | grep password			查看文件内容中包含password的行信息 

2023-02-03T01:25:02.435386Z 1 [Note] A temporary password is generated for root@localhost: 2*us+WPG-srY

**注意:**冒号后面的是密码,注意空格

7.登陆Mysql,修改密码,开放访问权限

mysql -uroot -p									登录mysql(使用临时密码登录)

#修改密码
set global validate_password_length=4;			设置密码长度最低位数
set global validate_password_policy=LOw;		设置密码安全等级低,便于密码可以惨改成root
set password = password('root');				设置密码为root

#开启访问权限
grant all on*.* to 'root'@'%' identified by 'root';flush privileges;

8.测试Mysql能否正常工作

show databases;

安装lrzsz

1、搜索lrzsz安装包,命令为yum list lrzsz

2、使用yum命令在线安装,命令为yum install IrzSz.x86_64

Yum(全称为Yellow dog updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

Linux部署项目

手动部署项目

1.在IDEA中将SpringBoot项目并打成jar包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IWl79WSa-1675928880044)(./img\image-20230203100811797.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OsG6Oan2-1675928880045)(./img\image-20230203101032252.png)]

2.将jar包上传到Linux服务器

mkdir /usr/local/app		创建目录,将项目jar包放到此目录

3.启动springBoot项目

java -jar reggie-1.0-SNAPSHOT.jar

4.检查防火墙。确保8180端口对外开放。访问SpringBoot项目

由于项目端口号是8180,防火墙未对外开放8180端口号,所以项目无法访问,需要打开8180端口

开放指定端口(firewall-cmd --zone=public --add-port=8180/tcp --permanent)
立即生效(firewall-cmd --reload)

5.验证

浏览器输入:http://192.168.235.128:8180/backend/index.html

6.:改为后台运行SpringBoot程序,并将日志输出到日志文件

目前的问题:

  • 采用控制台霸屏的形式运行程序(项目运行时做不了别的操作了)
  • 将日志输出到控制台,不方便查阅信息

解决办法:使用nohup命令启动项目

nohup命令:英文全称no hang up(不挂起),用于不挂断地运行指定命令,退出终端不会影响程序的运行
语法格式: nohup Command [ Arg ...][&]
参数说明:
Command:要执行的命令
Arg: 一些参数,可以指定输出文件&:让命令在后台运行
举例:
nohup java -jar boot工程.jar &> hello.log &				后台运行java -jar命令,并将日志输出到hello.log文件
nohup java -jar reggie-1.0-SNAPSHOT.jar &> reggie.log &  

7.停止SpringBoot服务

ps -ef | grep java			查看java进程号
kill -9 59423				关闭进程

通过shell自动部署项目

Redis课程介绍

Redis简介

介绍:Redis是一个基于内存的key-value结构数据库,它可以用作:数据库、缓存和消息中间件。它存储的value类型比较丰富,也被称为结构化的NoSql数据库。官网:https://redis.io

NoSql (Not only sQL),不仅仅是SQL,泛指非关系型数据库。NoSql数据库并不是要取代关系型数据库,而是关系型数据库的补充。

  • 关系型数据库(RDBMS)
    • Mysql
    • oracle
    • DB2
    • SQLServer
  • 非关系型数据库(NoSql)
    • Redis
    • Mongo db
    • MemCached

Redis应用场景

  • 缓存(使用场景比较多)
  • 任务队列
  • 消息队列
  • 分布式锁

优点:

  • 基于内存存储,读写性能高
  • 适合存储热点数据(热点商品、资讯、新闻)
  • 企业应用广泛

Redis下载与安装

下载:

Redis安装包分为windows版和Linux版:

  • windows版下载地址: https://github.com/microsoftarchive/redis/releases
  • Linux版下载地址:https://download.redis.io/releases/

Linux安装

Linux系统安装Redis步骤:
1.Redis安装包上传到Linux.解压安装包,命令: tar -zxvf redis-4.0.0.tar.gz -C /usr/local
3.安装Redis的依赖环境gcc,命令: yum install gcc-c++ (需要进入redis目录下:cd /usr/local/redis-4.0.0/)
4.进入/usr/local/redis-4.0.0,进行编译,命令:make
5.进入redis的src目录,进行安装,命令:make install

Windows安装:

Redis的windows版属于绿色软件,直接解压即可使用,解压后目录结构如下:
redis.windows.conf 	Redis配置文件
redis-cli.exe 		Redis客户端
redis-server.exe 	Redis服务端

Redis服务启动与停止

启动:

进入/usr/local/redis-4.0.0目录中: Linux中redis服务启动,可以使用redis-server,默认端口号为6379 (霸屏模式,做不了其它操作)

停止:

Ctrl+C 停止Redis服务

优化启动:

1.进入/usr/local/redis-4.0.0目录中
2.输入vim redis-config 进入redis-config文件
3.输入/dae 查找相关地址
4.把 no 改为 yes 表示启动redis变为后台运行
5.输入:wq 保存退出
6.再次启动redis   src/redis-server ./redis.conf

停止

ps -ef | grep redis			查看redis进程号
kill -9 59423				关闭进程

连接:

进入/usr/local/redis-4.0.0目录中:redis-cli 连接Redis服务器

扩展:

连接远程redis:redis-cli.exe -h ip地址 -p 端口号 -a 密码 (redis是不允许远程连接的,只能连接本地的redis)可以通过修改配置文件连接远程redis (需要关闭防火墙)

1.进入/usr/local/redis-4.0.0目录中
2.输入vim redis-config 进入redis-config文件
3.输入/bind 查找相关地址
4.注释bind 127.0.0.1
5.输入:wq 保存退出
6.再次启动redis   src/redis-server ./redis.conf

Redis设置密码

1.进入/usr/local/redis-4.0.0目录中
2.输入vim redis-config 进入redis-config文件
3.输入/requirepass 查找相关地址
4.把#号注释去掉,设置密码为123456
5.输入:wq 保存退出
6.再次启动redis   src/redis-server ./redis.conf

测试

再次启动redis并且连接,输入keys * 此时提示((error) NOAUTH Authentication required.) 表示未登录

登陆:

1.先输入redis-cli 连接reid 在输入auth 密码  提示ok表示登陆成功
2.直接输入 redis-cli -h localhost -p 6379 -a 123456

Redis数据类型

Redis存储的是key-value结构的数据,其中key是字符串类型,value有5种常用的数据类型:

  • 字符串string
  • 哈希hash
  • 列表list
  • 集合set
  • 有序集合sorted set

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GECmsV7A-1675928880045)(./img\image-20230207143454902.png)]

String类型操作命令

SET key value					设置指定key的值
GET key							获取指定key的值
SETEX key seconds value			设置指定key的值,并将key的过期时间设为seconds秒(常用场景:手机验证码)
SETNX key value					只有在key不存在时才会设置key的值

注意:
set命令:key相同的情况下,新的值会覆盖旧的值


更多命令可以参考Redis中文网:https://www.redis.net.cn

Hash类型操作命令

Redis hash是一个string类型的 field和value的映射表,hash特别适合用于存储对象,常用命令:

HSET key field value				将哈希表(对象)key中的字段field的值设为value
HGET key field						获取存储在哈希表中指定字段的值
HDEL key field						删除存储在哈希表中的指定字段
HKEYS key							获取哈希表中所有字段
HVALS key							获取哈希表中所有值
HGETALL key							获取在哈希表中指定key的所有字段和值

注意:    
field相同的情况下,新的值会覆盖旧的值
    
    
更多命令可以参考Redis中文网:https://www.redis.net.cn

列表类型操作命令

Redis列表是简单的字符串列表,按照插入顺序排序,常用命令:
LPUSH key value1 value2 value3				将一个或多个值插入到列表头部	lpush mylist a b c
LRANGE key start stop						获取列表指定范围内的元素  	lrange mylist 0 -1 表示从开头到结尾
RPOP key									移除并获取列表最后一个元素
LLEN key									获取列表长度
BRPOP key1 [key2] timeout					移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止

    
更多命令可以参考Redis中文网:https://www.redis.net.cn

集合类型操作命令

Redis set 是string类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据,常用命令:
SADD key member1 member2			向集合添加一个或多个成员 SADD setlist a b c			SADD setlist2 b c d
SMEMBERS key						返回集合中的所有成员
SCARD key							获取集合的成员数
SINTER key1 key2					返回给定所有集合的交集		b c
SUNION key1 key2					返回所有给定集合的并集		a b c d
SDIFF key1 key2						返回给定所有集合的差集 	SDIFF setlist setlist2 a		
SREM key member1 member2			移除集合中一个或多个成员

有序集合类型操作命令

Redis sorted set有序集合是string类型元素的集合,且不允许重复的成员。每个元素都会关联一个double类型的分数(score)。redis正是通过分数来为集合中的成员进行从小到大排序。有序集合的成员是唯一的,但分数却可以重复。常用命令:

ZADD key score1 member1 score2 member2					向有序集合添加一个或多个成员,或者更新已存在成员的分数
ZRANGE key start stop [WITHSCORES]						通过索引区间返回有序集合中指定区间内的成员
ZINCRBY key increment member							有序集合中对指定成员的分数加上增量increment
ZREM key member [member ...]							移除有序集合中的一个或多个成员

通用类型操作命令

KEYs pattern				查找所有符合给定模式( pattern)的key
EXISTS key					检查给定key是否存在
TYpE key					返回key所储存的值的类型
TTL key						返回给定key 的剩余生存时间(TTL,time to live),以秒为单位
DEL key						该命令用于在key存在时删除key

java中使用Redis

Jedis操作Redis

介绍

Redis 的Java客户端很多,官方推荐的有三种:

  • Jedis
  • Lettuce
  • Redisson
Jedis的maven坐标:
<!--添加jedis包-->
<dependency>
  <groupId>redis.clients</groupId>
  <artifactId>jedis</artifactId>
  <version>2.8.0</version>
</dependency>

使用Jedis操作Redis的步骤:
   		//1获取连接
        Jedis jedis = new Jedis("localhost",6379);
        
        //2执行具体的操作
        jedis.set("name", "dijia");
        String name = jedis.get("name");
        System.out.println(name);

        jedis.hset("0221", "name", "zxl");
        jedis.hset("0221", "age", "23");
        String name1 = jedis.hget("0221", "name");
        System.out.println(name1);
        
        //3关闭连接
        jedis.close();

Spring Data Redis操作Redis

Spring对 Redis客户端进行了整合,提供了Spring Data Redis,在Spring Boot项目中还提供了对应的Starter,即spring-boot-starter-data-redis

相关API

Spring Data Redis中提供了一个高度封装的类: RedisTemplate,针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口,具体分类如下:

Valueoperations:简单K-V操作
Setoperations:set类型数据操作
ZSetoperations:zset类型数据操作
HashOperations:针对map类型的数据操作
ListOperations:针对list类型的数据操作

1.添加jar包

Spring Boot项目中,可以使用Spring Data Redis来简化Redis操作,maven坐标:
 <!--添加spring data redis包-->
<dependency>
  <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>

2.配置yml文件

  #redis相关配置
spring:  
  redis:
    host: localhost
    port: 6379
    #password: 123456
    database: 0
    jedis:
      pool:
        max-active: 8 #最大连接数
        max-wait: 1ms #连接池最大阻塞时间
        max-idle: 4 #连接池中的最大空闲连接
        min-idle: 0 #连接池中的最小空闲连接

3.编辑代码

@SpringBootTest(classes = ReggieApplication.class)  ReggieApplication:启动类的类名
@RunWith(SpringRunner.class)
public class testSpringDataRedis {
    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 操作String类型数据
     */
    @Test
    public void testRedisString(){
        ValueOperations valueOperations = redisTemplate.opsForValue();
        valueOperations.set("city", "beijin");
        valueOperations.set("city", "beijin",10, TimeUnit.SECONDS);//10秒钟之后过期
        valueOperations.setIfAbsent("city1", "nanjin");//当key不存在时才插入         
    }
----------------------------------------------------------------------------------------------------------   
     /**
     * 操作hash类型数据
     */
    @Test
    public void testRedisHash(){
        HashOperations hashOperations = redisTemplate.opsForHash();
        hashOperations.put("0221", "name", "zxl");
        hashOperations.put("0221", "age", "23");
        hashOperations.put("0221", "addr", "bb");
        String name = (String) hashOperations.get("0221", "name");
    
        Set keys = hashOperations.keys("0221");//获取所以key
        for (Object key : keys) {
            System.out.println(key);
        }
    
        List values = hashOperations.values("0221");//获取所有value
        for (Object value : values) {
            System.out.println(value);
        }
    
    }
----------------------------------------------------------------------------------------------------------   
     /**
     * 操作List类型数据
     */
    @Test
    public void testRedisList(){
        ListOperations listOperations = redisTemplate.opsForList();
        listOperations.leftPush("mylist", "a");//存一个值
        listOperations.leftPushAll("mylist", "a","b","c");//存多个值
        List<String> mylist = listOperations.range("mylist", 0, -1);//简单取值
        for (Object o : mylist) {
            System.out.println(o);
        }
    
    	//出队列
        Long size = listOperations.size("mylist");
        int isize = size.intValue();
        for (int i = 0; i < isize; i++) {
            String mylist1 = (String) listOperations.rightPop("mylist");
            System.out.println(mylist1);
        }
    

    
    }
    
    
}

pring-boot-starter-data-redis


**2.配置yml文件**

```java
  #redis相关配置
spring:  
  redis:
    host: localhost
    port: 6379
    #password: 123456
    database: 0
    jedis:
      pool:
        max-active: 8 #最大连接数
        max-wait: 1ms #连接池最大阻塞时间
        max-idle: 4 #连接池中的最大空闲连接
        min-idle: 0 #连接池中的最小空闲连接

3.编辑代码

@SpringBootTest(classes = ReggieApplication.class)  ReggieApplication:启动类的类名
@RunWith(SpringRunner.class)
public class testSpringDataRedis {
    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 操作String类型数据
     */
    @Test
    public void testRedisString(){
        ValueOperations valueOperations = redisTemplate.opsForValue();
        valueOperations.set("city", "beijin");
        valueOperations.set("city", "beijin",10, TimeUnit.SECONDS);//10秒钟之后过期
        valueOperations.setIfAbsent("city1", "nanjin");//当key不存在时才插入         
    }
----------------------------------------------------------------------------------------------------------   
     /**
     * 操作hash类型数据
     */
    @Test
    public void testRedisHash(){
        HashOperations hashOperations = redisTemplate.opsForHash();
        hashOperations.put("0221", "name", "zxl");
        hashOperations.put("0221", "age", "23");
        hashOperations.put("0221", "addr", "bb");
        String name = (String) hashOperations.get("0221", "name");
    
        Set keys = hashOperations.keys("0221");//获取所以key
        for (Object key : keys) {
            System.out.println(key);
        }
    
        List values = hashOperations.values("0221");//获取所有value
        for (Object value : values) {
            System.out.println(value);
        }
    
    }
----------------------------------------------------------------------------------------------------------   
     /**
     * 操作List类型数据
     */
    @Test
    public void testRedisList(){
        ListOperations listOperations = redisTemplate.opsForList();
        listOperations.leftPush("mylist", "a");//存一个值
        listOperations.leftPushAll("mylist", "a","b","c");//存多个值
        List<String> mylist = listOperations.range("mylist", 0, -1);//简单取值
        for (Object o : mylist) {
            System.out.println(o);
        }
    
    	//出队列
        Long size = listOperations.size("mylist");
        int isize = size.intValue();
        for (int i = 0; i < isize; i++) {
            String mylist1 = (String) listOperations.rightPop("mylist");
            System.out.println(mylist1);
        }
    

    
    }
    
    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值