admin管理员组文章数量:1130349
文章目录
- 架构演进
- 一.开发环境&生成环境
- 1.1 开发环境
- 1.2 生产环境
- 二.WEB1.0&WEB2.0
- 2.1 WEB1.0
- 2.2 WEB2.0
- 2.3 搭建集群的问题
- 三.垂直架构
- Linux
- 一.引言
- 1.1 开发环境
- 1.2 生产环境
- 1.3 测试环境
- 1.4 操作系统的选择
- 二.介绍
- 2.1 Linux的版本
- 2.2 Linux和Windows区别
- 三.Linux目录结构
- 四.Linux基本命令
- 五.Linux目录命令
- 5.1 查看目录
- 5.2 切换目录
- 5.3 创建目录
- 5.4 删除目录
- 5.5 复制目录
- 5.6 移动/重命名目录
- 六.Linux文件命令
- 6.1 创建文件
- 6.2 编辑文件
- 6.3 编辑文件的其他操作
- 6.4 查看文件
- 6.5 移动&重命名文件
- 6.6 复制文件
- 6.7 删除文件
- 七.Linux压缩操作
- 7.1 tar命令
- 7.1.1 解压压缩包
- 7.1.2 打包成压缩包
- 7.2 zip命令
- 7.2.1 安装软件
- 7.2.2 解压压缩包
- 7.2.3 打包压缩包
- 八.用户&用户组操作
- 8.1 用户常用命令
- 8.1.1 用户创建
- 8.1.2设置新用户密码
- 8.1.3 用户切换
- 8.1.4 用户删除
- 8.1.5 用户修改
- 8.2 用户组操作
- 九.文件权限操作
- 9.1 修改文件权限
- 9.1.1 数字方式
- 9.1.2 符号方式
- 9.2 修改文件拥有者和组
- 十.Linux其他命令
- 10.1进程操作
- 10.2 服务操作
- 10.3 端口号查看
- 10.4 访问地址
- 10.5 查找文件
- Docker
- 一.引言
- 二.Docker介绍
- 三.Docker安装
- 3.1 下载Docker依赖环境
- 3.2 指定Docker镜像源
- 3.3 安装Docker
- 3.4 启动并测试Docker
- 四.Docker中央仓库
- 五.镜像操作
- 5.1 拉取镜像
- 5.2 查看本地全部镜像
- 5.3 删除本地镜像
- 5.4 镜像的导入导出
- 六.容器操作
- 6.1 运行容器
- 6.2 查看容器
- 6.3 查看容器日志
- 6.4 进入容器内部
- 6.5 复制内容到容器
- 6.6 启动容器
- 6.7 停止容器
- 6.8 重启容器
- 6.9 删除容器
- 七.Docker应用
- 7.1 前期工作
- 7.2 Docker安装Tomcat
- 7.3 Docker安装Mysql
- 7.4 部署SSM项目
- 八.数据卷
- 8.1 创建数据卷
- 8.2 查看数据卷详情
- 8.3 查看全部数据卷
- 8.4 删除数据卷
- 8.5 容器映射数据卷
- 8.5.1 数据卷名称映射容器
- 8.5.2 数据卷路径映射容器
- 九.Dockerfile自定义镜像
- 9.1 配置Dockerfile
- 9.2 通过Dockerfile制作镜像
- 十.Docker-Compose
- 10.1 下载安装Docker-Compose
- 10.1.1下载
- 10.1.2 设置权限
- 10.1.3 配置环境变量
- 10.1.4 测试
- 10.2 Docker-compose管理MySQL和Tomcat
- 10.3 Docker-Compose管理容器
- 10.4 Docker-Compose配合Dockerfile
- 10.4.1 docker-compose文件
- 10.4.2 Docker文件
- 10.4.3 运行
- Nginx
- 一.引言
- 二.概述
- 三.Nginx安装
- 3.1 安装
- 3.2 Nginx的配置文件
- Redis
- 四.Redis常用命令
- 4.1 Redis存储结构
- 4.2 Key-String常用命令
- 4.3 Key-Hash常用命令
- 4.4 Key-List常用命令
- 4.5 Key-Set常用命令
- 4.6 Key-Zset常用命令
- 4.7 Key常用命令
- 4.8 库常用命令
架构演进
一.开发环境&生成环境
1.1 开发环境
常见开发环境:win10/win7/Mac,这类都可称为开发环境,为了高效开发程序,我们通常会安装一些软件,导致操作系统不安全,稳定性降低.
1.2 生产环境
生产环境中,不采用以上系统,这种系统相对不安全,一般采用专业操作系统,
常用生产环境一是基于Linux系统,而是基于windows的操作系统,如:Windows2003 service
二.WEB1.0&WEB2.0
2.1 WEB1.0
web1.0时期.带宽不足,项目多是内容少,用户反问少,有的项目也不说需要对外开放,安全性稳定性要求不高
这时,只需要单体架构.
2.2 WEB2.0
web2.0时期,实现拨号上网,带宽提速,门户网站访问量提升,这时项目需要考虑安全性和稳定性,这时使用单体架构,当服务器出错或者用户访问量增加时,这时所有用户都无法使用
这时,基于单体架构基础上去搭建集群.
搭建集群可以提升项目稳定性和安全性,增加并发访问量
2.3 搭建集群的问题
1.如何平均将用户分配给服务器,缓解用户增加压力,请求该发送给哪个服务器?
2.如何实现各服务器的数据共享,如共享登录的session?
3.庞大数据量下,如何提升查询效率?
4,针对一些搜索,索引失效,如何提升效率?
1.Nginx:解决用户的平均分配
2.Redis:解决数据共享,实现缓存
3.ElasticSearch:解决数据搜索
三.垂直架构
项目中的模块增多,并且有些模块的访问量大,而解决访问量大的最直接的方法就是搭建集群,但是搭建集群让其他访问量小的模块也部署在几个服务器中,造成资源浪费,效果相对较差.
随着项目功能增加,最终可能导致项目无法正常启动.
并且,单体架构完美体现了低内聚,高耦合.这与开发准则正好相反
这时,需要使用垂直架构
Linux
一.引言
1.1 开发环境
平时大家大多是在Windows或者Mac操作系统下去编写代码进行开发,在开发环境中安装大量的软件,这样会导致环境的稳定性和安全性降低
1.2 生产环境
是将程序运行在此环境中,供用户去使用。这个环境是有专业的人员去维护,一般人是没有权限去操做生产环境的
1.3 测试环境
一般克隆一份生产环境,会将开发环境中的程序部署到测试环境中,这个环境的主要目的是去程序进程检测,收集程序中的各种问题,并交给开发人员进行修改
1.4 操作系统的选择
生产环境中,常用Windows 2003 service,Linux,Unix等等,Linux以稳定,可靠,免费的特点成为全球使用最多的操作系统.
Linux操作系统已成为后台开发人员必备技能,并且后期学习的各种知识都会设计Linux.
二.介绍
2.1 Linux的版本
Linux的版本分为两种,一种是Linus团队正在维护的开源内核版本。另一种是一些厂商基于内核版本封装的发行版本。
Linux的内核版本官网:https://www.kernel/
Linux的发行版本,咱们需要学习的发行版本就时CentOS
2.2 Linux和Windows区别
- Linux是严格区分大小写的,Windows无所谓。
- Linux中一切皆是文件。
- Linux中文件是没有后缀的,但是他有一些约定俗成的后缀。
- Windows下的软件一般是无法直接运行的Linux中。
Ps:我们在学习Linux时,参考Windows下做了什么,就在Linux中做什么
三.Linux目录结构
Windows文件结构带有盘符,Linux中没有盘符
通过ls / 可以查看Linux的顶级目录
| Linux目录 |
|---|
- root : 管理员HOME目录
- bin : 常用命令
- boot : 启动Linux核心文件
- etc : 系统管理所需的配置文件及子目录
- home : 用户HOME
- user : 软件安装目录
- opt : 额外软件安装目录
四.Linux基本命令
# 我是谁(查看当前用户)
who am i
# 我在哪(当前所在文件路径)
pwd
# 查看ip地址
ip a | ip address
# 清屏
clear
#ping 域名|ip
ping www.baidu
# 强行停止
Ctrl+C
Linux命令基本格式: 命令 [选项] [参数]
但不是所有命令都不遵循这个格式(例如 who am i)
当命令有多个选项时,可以写在一起: 命令 -选项A选项B (rm -rf)
五.Linux目录命令
5.1 查看目录
#基本格式 当目录名不写时,默认当前目录
ls -[a/l/d] [目录名]
#列出全部文件,包括隐藏文件
ls -a
#列出文件的全部信息
ls -l
#只查看目录本身
ls -d
查看指定目录下的内容,默认查看当前目录下内容
Linux中的隐藏文件是以.开头的,当前目录使用.表示,上一级目录使用…表示
5.2 切换目录
#基本格式
cd 具体路径|特殊符号
| 特殊符号 | 代表路径 |
|---|---|
| . | 当前目录 |
| … | 上一级目录 |
| / | 根目录 |
| ~ | 当前用户HOME目录 |
| - | 返回 |
进行目录切换,可以使用绝对路径 , 相对路径 , 特殊符号
5.3 创建目录
#创建单级目录
mkdir 目录名
#创建多级目录
mkdir -p 目录名
5.4 删除目录
#删除空白目录
rmdir 目录名
#删除非空目录并询问
rmdir -r 目录名
#删除非空目录并不询问
rmdir -rf 目录名
5.5 复制目录
#复制目录 其中-r代表递归复制,为必填项
cp -r 来源目录 目标目录
5.6 移动/重命名目录
根据参数判断时移动还是重命名
目录名后跟路径名则为移动, 跟新目录名则为重命名
#移动目录
mv 目录名 路径
#重命名
mv 目录名 新目录名
六.Linux文件命令
6.1 创建文件
#创建一个文件
touch 文件名
#创建多个文件
touch 文件名1 文件名2 ``````
6.2 编辑文件
# 1.查看文件 (进入查看模式)
vi 文件名
# 2.编辑文件 (进入编辑模式)
i:当前光标处进入编辑模式
a:当前光标后一格进入编辑模式
o:在当前光标下一行进入编辑模式
# 3.退出编辑模式(回到查看模式)
esc
# 4.从查看模式进入底行命令模式
:
# 5.保存文件
在底行模式下:wq:保存并退出,q!:不报错并推出
在查看模式下:ZZ:快速保存并退出
| vi/vim的工作模式 |
|---|
6.3 编辑文件的其他操作
行号操作
#查看文件的行号
set nu
#取消文件行号
set nonu
#快速跳转到指定行
to 行号
搜索操作
# 查找特定字符串所在位置 (与windows中ctrl+f作用一样,按n可查找下一个)
/world
快速定位
#快速跳转第一行
gg
#快速跳转最后一行
G
6.4 查看文件
#查看文件,从第一行到最后一行
cat 文件名
#倒序查看文件,从最后一行到第一行
tac 文件名
#显示较大文件,并能进行翻页
#通过空格向下翻页,q退出翻页
more 文件名
#通过PageUp和PageDown上下翻页,↑↓一行一行查看
less 文件名
#只查看文件前n行
head -n 文件名
#只查看文件后n行
tail -n 文件名
#显示文件日志,监控信息
tail -f 日志,监控日志
6.5 移动&重命名文件
通过命令的第二参数,判断是移动还是重命名
#移动文件 第二参数为路径
mv 文件名 路径
#重命名 第二参数为文件名(不存在该路径)
mv 文件名 新文件名
6.6 复制文件
将文件复制到指定目录下
#复制文件
cp 文件名 目录
6.7 删除文件
将指定文件删除
#删除文件并询问是否删除
rm 文件名
#删除文件不询问
rm -f 文件名
七.Linux压缩操作
7.1 tar命令
Linux系统中常见的压缩包,大多是.tar , .tar.gz , tgz的
7.1.1 解压压缩包
根据不同的压缩包后缀,采用不同的命令参数,否则可能造成解压失败或损失文件
#解压tar包
tar -zxvf 压缩包名称 [-C 解压路径]
#-z: 代表压缩包后缀是.gz类型
#-x: 代表解压动作
#-v: 解压过程中显示详细信息
#-f: -f必须写在指令的最后一个用于指定压缩包名称
#-C: 代表将压缩包解压到指定路径
7.1.2 打包成压缩包
可一次性将多个文件或目录打包成压缩包
#打包成tar包
tar -zcvf 压缩包名称 文件1,文件2.....
#-z: 代表压缩包后缀是.gz类型
#-c: 代表压缩动作
#-v: 解压过程中显示详细信息
#-f: -f必须写在指令的最后一个用于指定压缩包名称
#-C: 代表将压缩包解压到指定路径
7.2 zip命令
Linux中也支持windows下zip,rar压缩包
但是需要安装软件对压缩包进行操作
7.2.1 安装软件
#打包程序
yum -y install zip
#解压程序
yum -y install unzip
7.2.2 解压压缩包
#解压
unzip 压缩包名称
7.2.3 打包压缩包
#打包
zip 压缩包名称 文件1,文件2.....
八.用户&用户组操作
1.Linux是支持多用户的操作系统, 用户需要向管理员申请账号, 并通过账号才能操作Linux.
2.用户账号可帮助管理员追踪用户操作,或对用户资源访问权限进行控制
3.Linux用户分类
超级管理员: root uid=0
普通用户:user uid=500~60000
4.用户组
每个用户组可由多个用户
每个用户至少有一个用户组,如果创建时未指定组,则会以该用户名单独创建一个组
5.配置文件介绍
- /etc/passwd: 用于保存用户信息(用户名:密码位:UID:GID:描述信息:宿主目录:命令解析器)
- /etc/shadow: 用于保存密码信息
- /etc/group: 用于保存用户组信息(组名:组密码位:GID:组内用户列表)
- /etc/gshadow: 用户保存用户组密码
8.1 用户常用命令
8.1.1 用户创建
#用户创建
useradd -[cgd] [选项具体内容] 用户名
#-c: comment,为用户添加一段注释
#-g: group,指定用户所在组
#-d: 指定用户的HOME目录
8.1.2设置新用户密码
passwd 用户名
8.1.3 用户切换
#用户切换
su 用户名
# [root@localhost ~]# ->代表:root用户在本地登录,当前路径~,#代表该用户为超级管理员
# [lds@localhost root]$ ->代表:lds用户在root下本地登录,当前路径root,$代表普通用户
| 切换后 |
|---|
8.1.4 用户删除
#用户删除
userdel [-r] 用户名
#-r: 代表删除用户时,同时删除该用户的HOME目录
8.1.5 用户修改
#用户修改
usermod -[cgd] [选项具体内容] 用户名
#-c: comment,修改用户注释
#-g: group,修改用户所在组
#-d: 修改用户HOME目录
8.2 用户组操作
8.2.1 创建用户组
#创建用户组
groupadd 用户组名
8.2.2 修改用户组
#修改用户组
groupmod [-n] [修改用户组名] 用户组名
# -n 修改用户组名称
8.2.3 删除用户组
#删除用户组
#只能删除空组,即无用户存在
groupdel 用户组名
九.文件权限操作
在Linux中输入ls -l或ll 可查看文件和目录的详细信息
| 文件详情 |
|---|
1.上图中,test目录以d标识开头,说明test是一个目录,而1.txt以-标识开头,说明1.txt是一个文件
2.Linux文件详情后属性可分为三组查看
- 第一组rwx:代表文件拥有者的权限
- 第二组rwx:代表文件所属组用户的权限
- 第三组rwx:代表其他用户的权限
- r: read,读权限
- w: write,写权限
- x: execute,执行权限
3.第一个root:代表文件当前拥有者
第二个root:代表文件当前所在组
4.后续为:文件大小, 最后修改时间, 文件名
9.1 修改文件权限
chmod修改文件操作有两种方式,一是使用数字,二是使用符号…
- 数字修改方便操作,但会修改整体权限
- 符号修改更细致,但是操作相对麻烦
9.1.1 数字方式
chmod [-R] 777 文件|目录
#rwx三个权限对应数字:r->4 , w->2 , x->1
#-R: 当修改一个文件权限时, 可以添加-R, 将目录下的全部内容都修改权限
9.1.2 符号方式
chmod [-R] a=rw 文件|目录
#user:u, group:g, other:o ,all:a
#read:r, write:w, execute:x
#赋予权限方式: 添加:+, 减掉:-, 设定:=
#-R: 当修改一个目录权限时,可添加-R,将目录下的全部内容,都修改权限
9.2 修改文件拥有者和组
chown可修改文件拥有者和所属组,chgrp只能修改所属组
#修改文件拥有者和所属组
chown [-R] 拥有者:所属组 文件|目录
#修改文件的拥有者
chown [-R] 拥有者 文件|目录
#修改文件的所属组
chgrp [-R] 所属组 文件|目录
十.Linux其他命令
10.1进程操作
当需要结束进程的时,Linux需要使用一下命令
#查看全部正在运行的进程
ps -ef
#通过管道筛选 根据搜索内容进行过滤
ps -ef | grep 搜索内容
#杀死进程
kill -9 pid
10.2 服务操作
与windows服务操作一致,需要使用一下命令(默认centos7)
#服务启动
systemctl start 服务名称
#服务停止
systemctl stop 服务名称
#服务重启
systemctl restart 服务名称
#开机自启
systemctl enable 服务名称
#禁止开机自启
systemctl disable 服务名称
#服务状态
systemctl status 服务名称
10.3 端口号查看
发现端口号被占用,可使用以下命令查看pid,并结束进程
#下载netstat
yum -y install net-tools
#查看端口号占用情况
netstat -naop | grep 端口号
10.4 访问地址
类似于浏览器访问路径,无法显示图形,常用于测试
#访问路径
curl URL路径
10.5 查找文件
Linux查找指定文件,参数较多,可根据文件名查询
#按文件名查找
find -name 文件名称
#查找指定路径下的文件名
find /root -name 文件名称
Docker
一.引言
二.Docker介绍
三.Docker安装
3.1 下载Docker依赖环境
相较于Maven依赖JDK,想要安装Docker就需要先安装依赖环境
#下载Docker依赖
yum -y install yum-utils device-mapper-persistent-data lvm2
| 下载成功 |
|---|
3.2 指定Docker镜像源
Docker默认镜像是去国外服务器下载,速度慢,我们可以设置阿里镜像源,速度更快.
#配置阿里镜像源
yum-config-manager --add-repo http://mirrors.aliyun/docker-ce/linux/centos/docker-ce.repo
| 配置成功 |
|---|
3.3 安装Docker
使用yum方式安装Docker
#安装Docker
yum -y install docker-ce
| 安装成功 |
|---|
3.4 启动并测试Docker
安装成功,手动启动Docker,并设为开机自启
#启动Docker
systemctl start docker
#设置为开机自启
systemctl enable docker
#测试Docker
docker run hello-word
| 测试成功 |
|---|
四.Docker中央仓库
Docker官方仓库: 资源最全,但下载速度较慢
https://hub.docker/
国内镜像:下载速度快,但资源相对不全
- 网易蜂巢: https://c.163yun/hub#/home
- daocloud(推荐): http://hub.daocloud.io/
公司内部私服拉取镜像,配置如下:
# 需要创建/etc/docker/daemon.json,并添加如下内容 { "registry-mirrors": ["https://registry.docker-cn"], "insecure-registries": ["ip:port"] } # 重启两个服务 systemctl daemon-reload systemctl restart docker
| DaoCloud首页 |
|---|
五.镜像操作
5.1 拉取镜像
进入中央仓库拉取进行到本地(以DaoCloud拉取Tomcat为例)
- 进入DaoCloud首页,搜索tomcat
- 选择版本
- 点击拉取按钮,复制拉取命令
- 通过Docker拉取镜像
| 拉取界面 |
|---|
#中央仓库拉取镜像到本地
docker pull 镜像拉取命令(镜像名称[:tag])
# 以拉取tomcat为例
daocloud.io/library/tomcat:8.5.15-jre8
| 拉取成功 |
|---|
5.2 查看本地全部镜像
通过docker可查看本地安装的镜像信息.
包括: 标识(IMAGE ID), 名称(REPOSITORY ), 版本(TAG), 更新时间(CREATED), 大小(SIZE)
#查看镜像信息
docker images
| 查看镜像信息 |
|---|
5.3 删除本地镜像
镜像会占用磁盘空间, 不需要的镜像可以进行删除
#删除镜像
docker rmi 镜像id(可填全名称,或缩写但需要能为一标识)
#存在同名镜像通过 名称:版本号 指定删除
docker rmi 名称:版本号
#以删除tomcat为例
docker rmi b8
docker rmi b8dfe9ade316
| 成功删除 |
|---|
5.4 镜像的导入导出
通过硬盘方式传输虽然不算规范,却能有效解决网速下载慢的问题
# 导出镜像
docker save -o 导出路径 镜像标识
(docker save -o ./tomecat.image b8)
| 导出成功 |
|---|
#导入镜像 此方法导入后镜像的名称和版本为null,需要进行配置
docker load -i 镜像文件
(docker load -i tomcat.image)
#配置镜像名称和版本号
docker tag 镜像标识 新镜像名称:版本号
(docker tag b8 tomcat:8.5)
| 导入并配置 |
|---|
六.容器操作
6.1 运行容器
运行容器需要指定镜像,如果没有该镜像,会直接进行下载
#运行容器(简单,外部无法访问,不推荐)
docker run 镜像标识|镜像名称[:tag]
#常用运行容器方式
docker run -d -p linux宿主机端口:容器默认端口 --name 容器名称 镜像标识|镜像名称[:tag]
#-d: 代表后台运行容器
#-p 宿主机端口:容器端口 :为了映射当前Linux端口和容器端口
#--name 容器名称: 指定容器的名称
6.2 查看容器
查看全部容器, 运行中容器的信息
(标识, 镜像, 描述, 创建时间, 状态, 端口, 名称)
#查找全部容器的全部信息,包括没有运行的
docker ps -a
#只查找运行中的容器标识
docker ps -q
#查找所有容器的标识
docker ps -qa
6.3 查看容器日志
查看容器的使用日志
#查看容器日志
docker logs -f 容器标识
#-f:可以滚动查看全部日志
6.4 进入容器内部
通过docker可进入容器内部
#进入容器内部(可查看容器中的文件组成)
docker exec -it 容器标识 bash
#退出容器内部
exit
| 查看容器内部文件 |
|---|
6.5 复制内容到容器
可以将Linux系统中的文件复制进容器中的指定目录
#复制文件到容器
docker cp 文件名称 容器标识:容器/容器内部路径
6.6 启动容器
#启动容器
docker start 容器标识
6.7 停止容器
#停止容器指定
docker stop 容器标识
#停止所有容器
#通过 docker ps -qa 命令获取所有容器的标识
docker stop $(docker ps -qa)
6.8 重启容器
#重启所有容器
docker restart 容器标识
6.9 删除容器
#删除指定容器
docker rm 容器标识
#删除全部容器
#通过 docker ps -qa 命令获取所有容器的标识
docker rm $(docker ps -qa)
七.Docker应用
7.1 前期工作
将之前安装的tomcat和mysql服务停止
1.停止tomcat服务
#进入tomcat的bin目录下 cd /usr/local/apache-tomcat-8.5.59/bin #执行./shutdown命令 ./shutdown2.停止mysql服务
systemctl stop mysqld|mysqld.service3.禁止mysql开机自启
systemctl disable mysqld
7.2 Docker安装Tomcat
运行tomcat容器,为部署ssm项目做准备
#通过容器标识运行安装tomcat
docker run -d -p 8080:8080 --name tomcat 3b9
#通过提取命令运行安装tomcat
docker run -d -p 8080:8080 --name tomcat daocloud.io/library/tomcat:8.5.15-jre8
7.3 Docker安装Mysql
运行mysql容器,为部署ssm项目做准备
#通过容器标识运行安装mysql
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=1012 574
#通过提取命令运行安装mysql
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=1012 daocloud.io/library/mysql:5.7.4
7.4 部署SSM项目
1.根据上述操作配置tomcat,mysql容器
2.在idea中将ssm项目达成war包
3.将war复制到Linux中
4.在war包所在位置将war包复制到容器内部路径
#docker cp war包名称 容器标识:内部路径 docker cp ssm_openapi.war 3b9:/usr/local/tomcat/webapps/5.通过浏览器访问ssm项目
八.数据卷
8.1 创建数据卷
创建数据卷成功之后,会默认存放在/var/lib/docker/volumes/数据卷名称/_data
#创建数据卷
docker volume create 数据卷名称
8.2 查看数据卷详情
可查询到存放路径,创建时间等信息
#查看详情
docker volume inspect 数据卷名称
8.3 查看全部数据卷
#查看全部数据卷
docker volume ls
8.4 删除数据卷
#删除数据卷
docker volume rm 数据卷名称
8.5 容器映射数据卷
映射方式有两种
- 通过数据卷名称映射,如果数据卷的名称不存在,docker会自动创建,并且把容器中的自带的文件存放在默认存放路径下.
- 通过路径映射数据卷,指定一个路径作为数据卷的存放位置,但是该路径下是空的,不会把容器中自带的文件存放进来,需要通过手动创建.
8.5.1 数据卷名称映射容器
1.关闭之前练习启动的tomcat容器
#停止所有容器
docker stop $(docker ps -qa)
#删除所有容器
docker rm $(docker ps -qa)
2.创建一个数据卷volume_ssm_tomcat,默认存放路径为:/var/lib/docker/volumes
#新建数据卷
docker volume create volume_ssm_tomcat
3.执行数据卷名称映射
#通过数据卷名称映射容器
docker run -d -p 8080:8080 --name ssm_tomcat
-v volume_ssm_tomcat:/usr/local/tomcat/webapps b8
4.查看volume_ssm_tomcat/_data中是否有容器webapps目录下的内容
#查看目录
cd /var/lib/docker/volumes/volume_ssm_tomcat/_data
#查看文件
ls -l
5.将ssm项目放在/var/lib/docker/volumes/volume_ssm_tomcat/_data目录下,自动部署
6.通过浏览器访问,检测是否部署成功
| 部署成功 |
|---|
8.5.2 数据卷路径映射容器
1.关闭之前练习启动的tomcat容器
#停止所有容器
docker stop $(docker ps -qa)
#删除所有容器
docker rm $(docker ps -qa)
2.执行数据卷路径映射容器
#数据卷路径映射容器
docker run -d -p 8080:8080 --name ssm_tomcat
-v /opt/volume_ssm_tomcat:/usr/local/tomcat/webapps b8
3.测试访问tomcat首页,显示无法访问,
因为通过路径映射容器,路径下的目录是空的,不会将容器中文件存进去,需要自己手动创建
4.切换到volume_ssm_tomcat目录下新建ROOT目录,并在ROOT目录下编辑一份index.html文件
#切换到volume_ssm_tomcat目录
cd /opt/volume_ssm_tomcat
#新建ROOT目录
mkdir ROOT
#编辑index.html文件
cd ROOT/
vi index.html
5.将ssm项目存放在volume_ssm_tomcat下.通过浏览器测试是否部署成功
| 部署成功 |
|---|
九.Dockerfile自定义镜像
在之前的课程中我们学到了通过中央仓库下载镜像
现在我们可以自己动手制作镜像,需要通过Dockerfile文件去指定自定义镜像的信息
9.1 配置Dockerfile
创建自定义镜像需要Dockerfile文件,文件主要配置信息如下
#制作ssm容器镜像(注意.war包需要和Dockerfile在同级目录)
from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm_openapi.war /usr/local/tomcat/webapps
9.2 通过Dockerfile制作镜像
在Windows中新建一个ssm_tomcat文件夹,将Dockerfile和ssm_openapi放入文件夹中,将文件拖入Linux的root目录下
通过命令将其制作成镜像,注意: 命令需要在Dockerfile所在的目录下执行,执行后便可查看镜像信息.
#制作自定义镜像,自定义名称及版本号(注意命令最后有一个点)
docker build -t 镜像名称:版本号 .
十.Docker-Compose
之前通过docker运行镜像需要大量的参数,docker-compose可以帮助我们批量管理容器,只需要将信息在docker-compose.yml中进行配置即可
10.1 下载安装Docker-Compose
10.1.1下载
在GitHub中搜索docker-compose下载1.24.1版本
下载连接:https://github/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64
10.1.2 设置权限
将下载好的文件拖入root目录下,将文件进行改名,并赋予可执行权限
#重命名
mv docker-compose-Linux-x86_64 docker-compose
#赋予权限
chmod 777 docker-compose
10.1.3 配置环境变量
配置环境变量
将docker-compose文件移动到/user/local/bin
修改/etc/profile文件,将/user/local/bin配置到PATH中
#移动文件
mv docker-compose /usr/local/bin
#配置PATH
vi /etc/profile
#添加: export PATH=$JAVA_HOME:/usr/local/bin:$PATH
#重新加载配置文件
source /etc/profile
10.1.4 测试
在任意位置输入docker-compose
| 测试结果 |
|---|
10.2 Docker-compose管理MySQL和Tomcat
yml文件是通过key:value的形式指定配置信息
yml中多个配置信息以换行,空格隔开,不能使用TAB制表符
在opt目录下创建docker_mysql_tomcat目录,并放入docker-compose.yml文件
docker-compose.yml文件
version: '3.1'
service:
mysql:
restart: always
image: daocloud.io/library/mysql:5.7.4
container_name: mysql
ports:
-3306:3306
environment:
MYSQL_ROOT_PASSWORD: 1012
TZ: Asia/Shanghai
volumes:
- /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql
tomcat:
restart: always
image: daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat
ports:
- 8080:8080
environment:
TZ: Asia/Shanghai
volumes:
- /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps
- /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs
10.3 Docker-Compose管理容器
需要在docker-compose.yml文件下运行docker-compose命令
#基于docker-compose.yml文件启动容器
docker-compose up -d
#关闭并删除容器
docker-compose down
#开启已存在的容器
docker-compose start
#关闭容器
docker-compose stop
#重启容器
docker-compose restart
#查看存在容器
docker-compose ps
#查看日志
docker-compose log -f
10.4 Docker-Compose配合Dockerfile
使用docker-compose.yml文件以及Dockerfile文件生成自定义镜像
启动镜像,并由docker-compose去管理
10.4.1 docker-compose文件
编写文件
version: '3.1'
services:
ssm:
restart: always
build:
context: ../
dockerfile: Dockerfile
image: ssm:1.0
container_name: ssm
ports:
- 8081:8080
environment:
TZ: Asia/Shanghai
10.4.2 Docker文件
编写Docker文件
from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm_openapi.war /usr/local/tomcat/webapps
10.4.3 运行
测试结果
#进入docker-compose.yml文件所在位置
cd /opt/docker-tomcat/docker-compose/
#基于docker-compose.yml以及Dockerfile构建自定义对象
#如果该自定义镜像不存在,则会构建自定义镜像
#如果该自定义镜像存在,则会直接运行自定义镜像
docker-compose up -d
#重新构建自定义镜像
docker-compose build
#运行当前内容,并重新构建
docker-compose up ---build
Nginx
一.引言
二.概述
三.Nginx安装
3.1 安装
通过docker-compose安装
在/opt目录下创建docker_nginx,放入docker-compose.yml文件
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- 80:80
3.2 Nginx的配置文件
通过指令进入nginx容器,在/etc/nginx目录下存放着nginx.conf文件
关于核心配置nginx.conf文件
#全局块 worker_processes数值越大,并发能力越强 error_log 错误日志存放位置
worker_processes 1;
error_log /var/log/nginx/error.log warn;
#events块 worker_connections越大,并发能力越强
events {
worker_connections 1024;
}
#http块
http {
include /etc/nginx/mime.types;
default
}
Redis
四.Redis常用命令
4.1 Redis存储结构
1.key-string
- 一个key对应一个value
- 最常用,一般用于存一个值
2.key-hash
一个key对应一个map
常用于存储对象数据
3.key-list
- 一个key对应一个列表
- 使用list实现栈堆结构,有序可重复
4.key-set
- 一个key对应一个集合
- 可用于交集并集差集的操作,无效不可重复
5.key-zset
- 一个key对应一个有序的集合
- 常用于排行榜
6.HyperLogLog
- 计算近似值
7.GEO
- 地理位置
8.BIT
- 一般存储一个字符串,是一个byte[]
4.2 Key-String常用命令
#添加值
set key value
eg:set name peter
#取值
get key
eg:get name
#批量存值
mset key value [key value ...]
eg:mset age 18 sex man
#批量取值
mget key [key...]
eg:mget name age sex
#自增(+1)
incr key
eg:incr age
#自减(-1)
decr key
eg:decr age
#自增(自定义数量)
incrby key increment
eg:incrby age 10
#自减(自定义数量)
decrby key increment
eg:decrby age 10
#新增值,并设置生成时间(内存空间有限,尽量设置生存时间)
setex key second value
eg:setex birth 5 1998
#新增,当key以及存在时,不做任何操作,当key不存在,则新增
setnx key value
eg:setnx name lisi (不做任何操作)
eg:setnx salary 10000 (新增salary:10000)
#在value值原有基础上追加内容
append key value
eg:append birth 1012
#查看value字符串的长度
strlen key
eg:strlen name
4.3 Key-Hash常用命令
#存储数据
hset key field value
eg:hset student id 01
#获取数据
hget key field
eg:hget student id
#批量存储
hmset key field value [field value ...]
eg:hmset student name lisi age 20 sex man
#批量获取
hmget key field [field ...]
eg:hmget student id name age
#自增(自定义增加量
hincrby key field increment
eg:hincrby student age 10
#设值,当key-field已经存在,无事发生,不存在则做新增
hsetnx key field value
eg:hsetnx student age 22 (无事发生)
eg:hsetnx student habby game (新增)
#检查field是否存在,存在返回1,不存在返回0
hexists key feild [field ...]
eg:hexists student age (返回1)
eg:hexists student bbcc (返回0)
#删除key 对应的feild,可删除多个
hdel key field [field ...]
eg:hdel student name age
#获取当前hash结构中的全部field和value
hgetall key
eg:hgetall student
#获取当前hash结构中的全部field
hkeys key
eg:hkeys student
#获取当前hash结构中的全部value
hvals key
eg:hval student
#获取当前hash结构中field的数量
hlen key
eg:hlen student
4.4 Key-List常用命令
#存储数据
#从左侧插入数据
lpush key value [value ...]
eg:lpush habby swim basketball
#从右侧插入数据
rpush key value [value ...]
eg:rpush habby game
#插入后列表为 basketball swim game
#插入数据,如果key存在,且为list结构 则新增,key不存在或不为list结构,则失败
#左侧插入
lpushx key value
eg:lpushx habby run (新增成功)
#右侧
rpushx key value
eg:rpush a a (无事发生)
#修改数据
#根据存储索引下标,覆盖原值,如果下标等于list长度则在最后一位新增数据,超出则修改失败
lset key index value
eg:lset habby 2 program
#弹出获取数据,弹出后数据从list中删除
#左侧弹出
lpop key
eg: lpop habby
#右侧弹出
rpop key
eg: rpop bahhy
#查看指定索引范围的数据,start从0开始,stop从-1开始,代表最后一个,-2为倒数第二个
lrange key start stop
eg: lrange bahhy 0 2
#查看指定索引位置的数据,正数从第一位开始,负数从最后一位开始
lindex key index
eg:lindex habby 2
#查看整个列表的长度
llen key
eg:llen babby
#删除列表中数据 ,删除列表在count值为value的数据.count>0从前往后匹配,count<0从后往前匹配
#count=0删除列表中所有值为value的数据.一一匹配自己到列表中没有或已删除了count个后停止
lrem key count value
eg:lrem habby 2 basketball
#保留列表中的数据.保留索引下标内的的数据,其余数据被被删除
ltrim key start stop
eg: ltrim habby 0 3
#将第一个列表的最后一位数据,移到第二个裂变的第一位
rpoplpush list1 list2
eg: rpoplpush habby love
4.5 Key-Set常用命令
#存储数据
sadd key member [member ...]
eg: sadd lession java php html
#查看数据(无序的)
smembers key
eg: smembers lession
#随机弹出一个数据,count代表弹出数量,默认为1
spop key [count]
eg: spop lession 1
#取多个set的交集
sinter set1 set2 ...
eg:sinter lession class
#取多个set的的并集
sunion set1 set2 ...
eg:sunion lession class
#以第一个set为主的差集(set1{1,2,3} set2{2,6} 则差集为{1,3})
sdiff set1 set2 ...
eg: sdiff lession class
#删除数据
srem key memeber [member ...]
eg: srem lession php html
#查看当前的set集合中是否包含这个值.有则为1,没有则为0
sismember key member
eg:sismeber lession java
4.6 Key-Zset常用命令
#添加数据(score必须四数值且member不允许重复)
zadd key score member [score member ...]
eg:zadd salary 10000 zhangsan 13000 lisi 8000 王五
#修改member的数据,如果member存在,则正常增加score,如果member不存在,则相当于新增
zincrby key increment member
eg:zincrby salary 10000 zhangsan
#查看指定member的分数
zscore key member
eg:zscore salary lisi
#获取zset中数据的数量
zcard key
eg:zcard salary
#根据score的范围查询member数量(小于等于,大于等于)
zcount key min max
eg:zcount salary 12000 20000
#删除zset中数据
zrem key member [member ...]
eg: zrem salary lisi
#根据分数从小到大排序,获取指定范围内的数据(withscores 可以返回对应的score)
#start stop 为索引(0代表第一位,-1代表最后一位)
zrange key start stop [withscores]
eg:zrange salary 0 -1 withscores
#根据分数从大到小排序(withscores 可以返回对应的score)
zrevrange key start stop [withscores]
eg:zrevrange salary 0 -1 withscores
#根据分数的范围从小到大去查看member(withscores 可以返回对应的score)
#添加limit,与mysql中一样,可以分割数据.limit 0 1
#默认大于等于min 小于等于max 可以通过 (min (max 取得大于min小于max的值
#最大值可用+inf 最小值-inf
zrangebyscore key min max [withscores] [limit startpage pagesize]
eg:zrangebyscore salary 12000 20000 withscores limit 0 2
#根据分数从大到小查看,其他与上相同
zrevrangebyscore key max min [withscores] [limit startpage pagesize]
eg:zrevrangebyscore salary 20000 12000 withscores limit 0 2
4.7 Key常用命令
#查看redis中全部的key (*:所有, XXX*:以XXX开头, *xxx: 以xxx结尾)
keys pattern
eg:keys *
#查看key是否存在,1:key存在,0:key不存在
exists key
eg:exists student
#删除key
del key [key ...]
#设置key的生存时间,单位为秒/毫秒,设置能存活多久
expire key second
pexpire key milliseconds
#设置可以的剩余生存时间单位为秒/毫秒,设置能活到什么时候
expireat key timestamp
pexpireat key milliseconds
#查看key的剩余时间,单位秒/毫秒(-2:key不存在,-1:key未设置生存时间)
ttl key
pttl key
#移除key的生存时间(1:成功,0-key未设置生存时间/key不存在)
persist key
#选择操作的库(redis分成16个库)
select 0-15
#移动key到另一个库中
move key db
4.8 库常用命令
#清空当前数据库
flushdb
#清空全部数据库
flushall
#查看当前数据库中有多少key
dbsize
#查看最后一次操作数据到磁盘的时间/时间戳
lastsave
#实时监控redis服务接收到的命令
monitor
文章目录
- 架构演进
- 一.开发环境&生成环境
- 1.1 开发环境
- 1.2 生产环境
- 二.WEB1.0&WEB2.0
- 2.1 WEB1.0
- 2.2 WEB2.0
- 2.3 搭建集群的问题
- 三.垂直架构
- Linux
- 一.引言
- 1.1 开发环境
- 1.2 生产环境
- 1.3 测试环境
- 1.4 操作系统的选择
- 二.介绍
- 2.1 Linux的版本
- 2.2 Linux和Windows区别
- 三.Linux目录结构
- 四.Linux基本命令
- 五.Linux目录命令
- 5.1 查看目录
- 5.2 切换目录
- 5.3 创建目录
- 5.4 删除目录
- 5.5 复制目录
- 5.6 移动/重命名目录
- 六.Linux文件命令
- 6.1 创建文件
- 6.2 编辑文件
- 6.3 编辑文件的其他操作
- 6.4 查看文件
- 6.5 移动&重命名文件
- 6.6 复制文件
- 6.7 删除文件
- 七.Linux压缩操作
- 7.1 tar命令
- 7.1.1 解压压缩包
- 7.1.2 打包成压缩包
- 7.2 zip命令
- 7.2.1 安装软件
- 7.2.2 解压压缩包
- 7.2.3 打包压缩包
- 八.用户&用户组操作
- 8.1 用户常用命令
- 8.1.1 用户创建
- 8.1.2设置新用户密码
- 8.1.3 用户切换
- 8.1.4 用户删除
- 8.1.5 用户修改
- 8.2 用户组操作
- 九.文件权限操作
- 9.1 修改文件权限
- 9.1.1 数字方式
- 9.1.2 符号方式
- 9.2 修改文件拥有者和组
- 十.Linux其他命令
- 10.1进程操作
- 10.2 服务操作
- 10.3 端口号查看
- 10.4 访问地址
- 10.5 查找文件
- Docker
- 一.引言
- 二.Docker介绍
- 三.Docker安装
- 3.1 下载Docker依赖环境
- 3.2 指定Docker镜像源
- 3.3 安装Docker
- 3.4 启动并测试Docker
- 四.Docker中央仓库
- 五.镜像操作
- 5.1 拉取镜像
- 5.2 查看本地全部镜像
- 5.3 删除本地镜像
- 5.4 镜像的导入导出
- 六.容器操作
- 6.1 运行容器
- 6.2 查看容器
- 6.3 查看容器日志
- 6.4 进入容器内部
- 6.5 复制内容到容器
- 6.6 启动容器
- 6.7 停止容器
- 6.8 重启容器
- 6.9 删除容器
- 七.Docker应用
- 7.1 前期工作
- 7.2 Docker安装Tomcat
- 7.3 Docker安装Mysql
- 7.4 部署SSM项目
- 八.数据卷
- 8.1 创建数据卷
- 8.2 查看数据卷详情
- 8.3 查看全部数据卷
- 8.4 删除数据卷
- 8.5 容器映射数据卷
- 8.5.1 数据卷名称映射容器
- 8.5.2 数据卷路径映射容器
- 九.Dockerfile自定义镜像
- 9.1 配置Dockerfile
- 9.2 通过Dockerfile制作镜像
- 十.Docker-Compose
- 10.1 下载安装Docker-Compose
- 10.1.1下载
- 10.1.2 设置权限
- 10.1.3 配置环境变量
- 10.1.4 测试
- 10.2 Docker-compose管理MySQL和Tomcat
- 10.3 Docker-Compose管理容器
- 10.4 Docker-Compose配合Dockerfile
- 10.4.1 docker-compose文件
- 10.4.2 Docker文件
- 10.4.3 运行
- Nginx
- 一.引言
- 二.概述
- 三.Nginx安装
- 3.1 安装
- 3.2 Nginx的配置文件
- Redis
- 四.Redis常用命令
- 4.1 Redis存储结构
- 4.2 Key-String常用命令
- 4.3 Key-Hash常用命令
- 4.4 Key-List常用命令
- 4.5 Key-Set常用命令
- 4.6 Key-Zset常用命令
- 4.7 Key常用命令
- 4.8 库常用命令
架构演进
一.开发环境&生成环境
1.1 开发环境
常见开发环境:win10/win7/Mac,这类都可称为开发环境,为了高效开发程序,我们通常会安装一些软件,导致操作系统不安全,稳定性降低.
1.2 生产环境
生产环境中,不采用以上系统,这种系统相对不安全,一般采用专业操作系统,
常用生产环境一是基于Linux系统,而是基于windows的操作系统,如:Windows2003 service
二.WEB1.0&WEB2.0
2.1 WEB1.0
web1.0时期.带宽不足,项目多是内容少,用户反问少,有的项目也不说需要对外开放,安全性稳定性要求不高
这时,只需要单体架构.
2.2 WEB2.0
web2.0时期,实现拨号上网,带宽提速,门户网站访问量提升,这时项目需要考虑安全性和稳定性,这时使用单体架构,当服务器出错或者用户访问量增加时,这时所有用户都无法使用
这时,基于单体架构基础上去搭建集群.
搭建集群可以提升项目稳定性和安全性,增加并发访问量
2.3 搭建集群的问题
1.如何平均将用户分配给服务器,缓解用户增加压力,请求该发送给哪个服务器?
2.如何实现各服务器的数据共享,如共享登录的session?
3.庞大数据量下,如何提升查询效率?
4,针对一些搜索,索引失效,如何提升效率?
1.Nginx:解决用户的平均分配
2.Redis:解决数据共享,实现缓存
3.ElasticSearch:解决数据搜索
三.垂直架构
项目中的模块增多,并且有些模块的访问量大,而解决访问量大的最直接的方法就是搭建集群,但是搭建集群让其他访问量小的模块也部署在几个服务器中,造成资源浪费,效果相对较差.
随着项目功能增加,最终可能导致项目无法正常启动.
并且,单体架构完美体现了低内聚,高耦合.这与开发准则正好相反
这时,需要使用垂直架构
Linux
一.引言
1.1 开发环境
平时大家大多是在Windows或者Mac操作系统下去编写代码进行开发,在开发环境中安装大量的软件,这样会导致环境的稳定性和安全性降低
1.2 生产环境
是将程序运行在此环境中,供用户去使用。这个环境是有专业的人员去维护,一般人是没有权限去操做生产环境的
1.3 测试环境
一般克隆一份生产环境,会将开发环境中的程序部署到测试环境中,这个环境的主要目的是去程序进程检测,收集程序中的各种问题,并交给开发人员进行修改
1.4 操作系统的选择
生产环境中,常用Windows 2003 service,Linux,Unix等等,Linux以稳定,可靠,免费的特点成为全球使用最多的操作系统.
Linux操作系统已成为后台开发人员必备技能,并且后期学习的各种知识都会设计Linux.
二.介绍
2.1 Linux的版本
Linux的版本分为两种,一种是Linus团队正在维护的开源内核版本。另一种是一些厂商基于内核版本封装的发行版本。
Linux的内核版本官网:https://www.kernel/
Linux的发行版本,咱们需要学习的发行版本就时CentOS
2.2 Linux和Windows区别
- Linux是严格区分大小写的,Windows无所谓。
- Linux中一切皆是文件。
- Linux中文件是没有后缀的,但是他有一些约定俗成的后缀。
- Windows下的软件一般是无法直接运行的Linux中。
Ps:我们在学习Linux时,参考Windows下做了什么,就在Linux中做什么
三.Linux目录结构
Windows文件结构带有盘符,Linux中没有盘符
通过ls / 可以查看Linux的顶级目录
| Linux目录 |
|---|
- root : 管理员HOME目录
- bin : 常用命令
- boot : 启动Linux核心文件
- etc : 系统管理所需的配置文件及子目录
- home : 用户HOME
- user : 软件安装目录
- opt : 额外软件安装目录
四.Linux基本命令
# 我是谁(查看当前用户)
who am i
# 我在哪(当前所在文件路径)
pwd
# 查看ip地址
ip a | ip address
# 清屏
clear
#ping 域名|ip
ping www.baidu
# 强行停止
Ctrl+C
Linux命令基本格式: 命令 [选项] [参数]
但不是所有命令都不遵循这个格式(例如 who am i)
当命令有多个选项时,可以写在一起: 命令 -选项A选项B (rm -rf)
五.Linux目录命令
5.1 查看目录
#基本格式 当目录名不写时,默认当前目录
ls -[a/l/d] [目录名]
#列出全部文件,包括隐藏文件
ls -a
#列出文件的全部信息
ls -l
#只查看目录本身
ls -d
查看指定目录下的内容,默认查看当前目录下内容
Linux中的隐藏文件是以.开头的,当前目录使用.表示,上一级目录使用…表示
5.2 切换目录
#基本格式
cd 具体路径|特殊符号
| 特殊符号 | 代表路径 |
|---|---|
| . | 当前目录 |
| … | 上一级目录 |
| / | 根目录 |
| ~ | 当前用户HOME目录 |
| - | 返回 |
进行目录切换,可以使用绝对路径 , 相对路径 , 特殊符号
5.3 创建目录
#创建单级目录
mkdir 目录名
#创建多级目录
mkdir -p 目录名
5.4 删除目录
#删除空白目录
rmdir 目录名
#删除非空目录并询问
rmdir -r 目录名
#删除非空目录并不询问
rmdir -rf 目录名
5.5 复制目录
#复制目录 其中-r代表递归复制,为必填项
cp -r 来源目录 目标目录
5.6 移动/重命名目录
根据参数判断时移动还是重命名
目录名后跟路径名则为移动, 跟新目录名则为重命名
#移动目录
mv 目录名 路径
#重命名
mv 目录名 新目录名
六.Linux文件命令
6.1 创建文件
#创建一个文件
touch 文件名
#创建多个文件
touch 文件名1 文件名2 ``````
6.2 编辑文件
# 1.查看文件 (进入查看模式)
vi 文件名
# 2.编辑文件 (进入编辑模式)
i:当前光标处进入编辑模式
a:当前光标后一格进入编辑模式
o:在当前光标下一行进入编辑模式
# 3.退出编辑模式(回到查看模式)
esc
# 4.从查看模式进入底行命令模式
:
# 5.保存文件
在底行模式下:wq:保存并退出,q!:不报错并推出
在查看模式下:ZZ:快速保存并退出
| vi/vim的工作模式 |
|---|
6.3 编辑文件的其他操作
行号操作
#查看文件的行号
set nu
#取消文件行号
set nonu
#快速跳转到指定行
to 行号
搜索操作
# 查找特定字符串所在位置 (与windows中ctrl+f作用一样,按n可查找下一个)
/world
快速定位
#快速跳转第一行
gg
#快速跳转最后一行
G
6.4 查看文件
#查看文件,从第一行到最后一行
cat 文件名
#倒序查看文件,从最后一行到第一行
tac 文件名
#显示较大文件,并能进行翻页
#通过空格向下翻页,q退出翻页
more 文件名
#通过PageUp和PageDown上下翻页,↑↓一行一行查看
less 文件名
#只查看文件前n行
head -n 文件名
#只查看文件后n行
tail -n 文件名
#显示文件日志,监控信息
tail -f 日志,监控日志
6.5 移动&重命名文件
通过命令的第二参数,判断是移动还是重命名
#移动文件 第二参数为路径
mv 文件名 路径
#重命名 第二参数为文件名(不存在该路径)
mv 文件名 新文件名
6.6 复制文件
将文件复制到指定目录下
#复制文件
cp 文件名 目录
6.7 删除文件
将指定文件删除
#删除文件并询问是否删除
rm 文件名
#删除文件不询问
rm -f 文件名
七.Linux压缩操作
7.1 tar命令
Linux系统中常见的压缩包,大多是.tar , .tar.gz , tgz的
7.1.1 解压压缩包
根据不同的压缩包后缀,采用不同的命令参数,否则可能造成解压失败或损失文件
#解压tar包
tar -zxvf 压缩包名称 [-C 解压路径]
#-z: 代表压缩包后缀是.gz类型
#-x: 代表解压动作
#-v: 解压过程中显示详细信息
#-f: -f必须写在指令的最后一个用于指定压缩包名称
#-C: 代表将压缩包解压到指定路径
7.1.2 打包成压缩包
可一次性将多个文件或目录打包成压缩包
#打包成tar包
tar -zcvf 压缩包名称 文件1,文件2.....
#-z: 代表压缩包后缀是.gz类型
#-c: 代表压缩动作
#-v: 解压过程中显示详细信息
#-f: -f必须写在指令的最后一个用于指定压缩包名称
#-C: 代表将压缩包解压到指定路径
7.2 zip命令
Linux中也支持windows下zip,rar压缩包
但是需要安装软件对压缩包进行操作
7.2.1 安装软件
#打包程序
yum -y install zip
#解压程序
yum -y install unzip
7.2.2 解压压缩包
#解压
unzip 压缩包名称
7.2.3 打包压缩包
#打包
zip 压缩包名称 文件1,文件2.....
八.用户&用户组操作
1.Linux是支持多用户的操作系统, 用户需要向管理员申请账号, 并通过账号才能操作Linux.
2.用户账号可帮助管理员追踪用户操作,或对用户资源访问权限进行控制
3.Linux用户分类
超级管理员: root uid=0
普通用户:user uid=500~60000
4.用户组
每个用户组可由多个用户
每个用户至少有一个用户组,如果创建时未指定组,则会以该用户名单独创建一个组
5.配置文件介绍
- /etc/passwd: 用于保存用户信息(用户名:密码位:UID:GID:描述信息:宿主目录:命令解析器)
- /etc/shadow: 用于保存密码信息
- /etc/group: 用于保存用户组信息(组名:组密码位:GID:组内用户列表)
- /etc/gshadow: 用户保存用户组密码
8.1 用户常用命令
8.1.1 用户创建
#用户创建
useradd -[cgd] [选项具体内容] 用户名
#-c: comment,为用户添加一段注释
#-g: group,指定用户所在组
#-d: 指定用户的HOME目录
8.1.2设置新用户密码
passwd 用户名
8.1.3 用户切换
#用户切换
su 用户名
# [root@localhost ~]# ->代表:root用户在本地登录,当前路径~,#代表该用户为超级管理员
# [lds@localhost root]$ ->代表:lds用户在root下本地登录,当前路径root,$代表普通用户
| 切换后 |
|---|
8.1.4 用户删除
#用户删除
userdel [-r] 用户名
#-r: 代表删除用户时,同时删除该用户的HOME目录
8.1.5 用户修改
#用户修改
usermod -[cgd] [选项具体内容] 用户名
#-c: comment,修改用户注释
#-g: group,修改用户所在组
#-d: 修改用户HOME目录
8.2 用户组操作
8.2.1 创建用户组
#创建用户组
groupadd 用户组名
8.2.2 修改用户组
#修改用户组
groupmod [-n] [修改用户组名] 用户组名
# -n 修改用户组名称
8.2.3 删除用户组
#删除用户组
#只能删除空组,即无用户存在
groupdel 用户组名
九.文件权限操作
在Linux中输入ls -l或ll 可查看文件和目录的详细信息
| 文件详情 |
|---|
1.上图中,test目录以d标识开头,说明test是一个目录,而1.txt以-标识开头,说明1.txt是一个文件
2.Linux文件详情后属性可分为三组查看
- 第一组rwx:代表文件拥有者的权限
- 第二组rwx:代表文件所属组用户的权限
- 第三组rwx:代表其他用户的权限
- r: read,读权限
- w: write,写权限
- x: execute,执行权限
3.第一个root:代表文件当前拥有者
第二个root:代表文件当前所在组
4.后续为:文件大小, 最后修改时间, 文件名
9.1 修改文件权限
chmod修改文件操作有两种方式,一是使用数字,二是使用符号…
- 数字修改方便操作,但会修改整体权限
- 符号修改更细致,但是操作相对麻烦
9.1.1 数字方式
chmod [-R] 777 文件|目录
#rwx三个权限对应数字:r->4 , w->2 , x->1
#-R: 当修改一个文件权限时, 可以添加-R, 将目录下的全部内容都修改权限
9.1.2 符号方式
chmod [-R] a=rw 文件|目录
#user:u, group:g, other:o ,all:a
#read:r, write:w, execute:x
#赋予权限方式: 添加:+, 减掉:-, 设定:=
#-R: 当修改一个目录权限时,可添加-R,将目录下的全部内容,都修改权限
9.2 修改文件拥有者和组
chown可修改文件拥有者和所属组,chgrp只能修改所属组
#修改文件拥有者和所属组
chown [-R] 拥有者:所属组 文件|目录
#修改文件的拥有者
chown [-R] 拥有者 文件|目录
#修改文件的所属组
chgrp [-R] 所属组 文件|目录
十.Linux其他命令
10.1进程操作
当需要结束进程的时,Linux需要使用一下命令
#查看全部正在运行的进程
ps -ef
#通过管道筛选 根据搜索内容进行过滤
ps -ef | grep 搜索内容
#杀死进程
kill -9 pid
10.2 服务操作
与windows服务操作一致,需要使用一下命令(默认centos7)
#服务启动
systemctl start 服务名称
#服务停止
systemctl stop 服务名称
#服务重启
systemctl restart 服务名称
#开机自启
systemctl enable 服务名称
#禁止开机自启
systemctl disable 服务名称
#服务状态
systemctl status 服务名称
10.3 端口号查看
发现端口号被占用,可使用以下命令查看pid,并结束进程
#下载netstat
yum -y install net-tools
#查看端口号占用情况
netstat -naop | grep 端口号
10.4 访问地址
类似于浏览器访问路径,无法显示图形,常用于测试
#访问路径
curl URL路径
10.5 查找文件
Linux查找指定文件,参数较多,可根据文件名查询
#按文件名查找
find -name 文件名称
#查找指定路径下的文件名
find /root -name 文件名称
Docker
一.引言
二.Docker介绍
三.Docker安装
3.1 下载Docker依赖环境
相较于Maven依赖JDK,想要安装Docker就需要先安装依赖环境
#下载Docker依赖
yum -y install yum-utils device-mapper-persistent-data lvm2
| 下载成功 |
|---|
3.2 指定Docker镜像源
Docker默认镜像是去国外服务器下载,速度慢,我们可以设置阿里镜像源,速度更快.
#配置阿里镜像源
yum-config-manager --add-repo http://mirrors.aliyun/docker-ce/linux/centos/docker-ce.repo
| 配置成功 |
|---|
3.3 安装Docker
使用yum方式安装Docker
#安装Docker
yum -y install docker-ce
| 安装成功 |
|---|
3.4 启动并测试Docker
安装成功,手动启动Docker,并设为开机自启
#启动Docker
systemctl start docker
#设置为开机自启
systemctl enable docker
#测试Docker
docker run hello-word
| 测试成功 |
|---|
四.Docker中央仓库
Docker官方仓库: 资源最全,但下载速度较慢
https://hub.docker/
国内镜像:下载速度快,但资源相对不全
- 网易蜂巢: https://c.163yun/hub#/home
- daocloud(推荐): http://hub.daocloud.io/
公司内部私服拉取镜像,配置如下:
# 需要创建/etc/docker/daemon.json,并添加如下内容 { "registry-mirrors": ["https://registry.docker-cn"], "insecure-registries": ["ip:port"] } # 重启两个服务 systemctl daemon-reload systemctl restart docker
| DaoCloud首页 |
|---|
五.镜像操作
5.1 拉取镜像
进入中央仓库拉取进行到本地(以DaoCloud拉取Tomcat为例)
- 进入DaoCloud首页,搜索tomcat
- 选择版本
- 点击拉取按钮,复制拉取命令
- 通过Docker拉取镜像
| 拉取界面 |
|---|
#中央仓库拉取镜像到本地
docker pull 镜像拉取命令(镜像名称[:tag])
# 以拉取tomcat为例
daocloud.io/library/tomcat:8.5.15-jre8
| 拉取成功 |
|---|
5.2 查看本地全部镜像
通过docker可查看本地安装的镜像信息.
包括: 标识(IMAGE ID), 名称(REPOSITORY ), 版本(TAG), 更新时间(CREATED), 大小(SIZE)
#查看镜像信息
docker images
| 查看镜像信息 |
|---|
5.3 删除本地镜像
镜像会占用磁盘空间, 不需要的镜像可以进行删除
#删除镜像
docker rmi 镜像id(可填全名称,或缩写但需要能为一标识)
#存在同名镜像通过 名称:版本号 指定删除
docker rmi 名称:版本号
#以删除tomcat为例
docker rmi b8
docker rmi b8dfe9ade316
| 成功删除 |
|---|
5.4 镜像的导入导出
通过硬盘方式传输虽然不算规范,却能有效解决网速下载慢的问题
# 导出镜像
docker save -o 导出路径 镜像标识
(docker save -o ./tomecat.image b8)
| 导出成功 |
|---|
#导入镜像 此方法导入后镜像的名称和版本为null,需要进行配置
docker load -i 镜像文件
(docker load -i tomcat.image)
#配置镜像名称和版本号
docker tag 镜像标识 新镜像名称:版本号
(docker tag b8 tomcat:8.5)
| 导入并配置 |
|---|
六.容器操作
6.1 运行容器
运行容器需要指定镜像,如果没有该镜像,会直接进行下载
#运行容器(简单,外部无法访问,不推荐)
docker run 镜像标识|镜像名称[:tag]
#常用运行容器方式
docker run -d -p linux宿主机端口:容器默认端口 --name 容器名称 镜像标识|镜像名称[:tag]
#-d: 代表后台运行容器
#-p 宿主机端口:容器端口 :为了映射当前Linux端口和容器端口
#--name 容器名称: 指定容器的名称
6.2 查看容器
查看全部容器, 运行中容器的信息
(标识, 镜像, 描述, 创建时间, 状态, 端口, 名称)
#查找全部容器的全部信息,包括没有运行的
docker ps -a
#只查找运行中的容器标识
docker ps -q
#查找所有容器的标识
docker ps -qa
6.3 查看容器日志
查看容器的使用日志
#查看容器日志
docker logs -f 容器标识
#-f:可以滚动查看全部日志
6.4 进入容器内部
通过docker可进入容器内部
#进入容器内部(可查看容器中的文件组成)
docker exec -it 容器标识 bash
#退出容器内部
exit
| 查看容器内部文件 |
|---|
6.5 复制内容到容器
可以将Linux系统中的文件复制进容器中的指定目录
#复制文件到容器
docker cp 文件名称 容器标识:容器/容器内部路径
6.6 启动容器
#启动容器
docker start 容器标识
6.7 停止容器
#停止容器指定
docker stop 容器标识
#停止所有容器
#通过 docker ps -qa 命令获取所有容器的标识
docker stop $(docker ps -qa)
6.8 重启容器
#重启所有容器
docker restart 容器标识
6.9 删除容器
#删除指定容器
docker rm 容器标识
#删除全部容器
#通过 docker ps -qa 命令获取所有容器的标识
docker rm $(docker ps -qa)
七.Docker应用
7.1 前期工作
将之前安装的tomcat和mysql服务停止
1.停止tomcat服务
#进入tomcat的bin目录下 cd /usr/local/apache-tomcat-8.5.59/bin #执行./shutdown命令 ./shutdown2.停止mysql服务
systemctl stop mysqld|mysqld.service3.禁止mysql开机自启
systemctl disable mysqld
7.2 Docker安装Tomcat
运行tomcat容器,为部署ssm项目做准备
#通过容器标识运行安装tomcat
docker run -d -p 8080:8080 --name tomcat 3b9
#通过提取命令运行安装tomcat
docker run -d -p 8080:8080 --name tomcat daocloud.io/library/tomcat:8.5.15-jre8
7.3 Docker安装Mysql
运行mysql容器,为部署ssm项目做准备
#通过容器标识运行安装mysql
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=1012 574
#通过提取命令运行安装mysql
docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=1012 daocloud.io/library/mysql:5.7.4
7.4 部署SSM项目
1.根据上述操作配置tomcat,mysql容器
2.在idea中将ssm项目达成war包
3.将war复制到Linux中
4.在war包所在位置将war包复制到容器内部路径
#docker cp war包名称 容器标识:内部路径 docker cp ssm_openapi.war 3b9:/usr/local/tomcat/webapps/5.通过浏览器访问ssm项目
八.数据卷
8.1 创建数据卷
创建数据卷成功之后,会默认存放在/var/lib/docker/volumes/数据卷名称/_data
#创建数据卷
docker volume create 数据卷名称
8.2 查看数据卷详情
可查询到存放路径,创建时间等信息
#查看详情
docker volume inspect 数据卷名称
8.3 查看全部数据卷
#查看全部数据卷
docker volume ls
8.4 删除数据卷
#删除数据卷
docker volume rm 数据卷名称
8.5 容器映射数据卷
映射方式有两种
- 通过数据卷名称映射,如果数据卷的名称不存在,docker会自动创建,并且把容器中的自带的文件存放在默认存放路径下.
- 通过路径映射数据卷,指定一个路径作为数据卷的存放位置,但是该路径下是空的,不会把容器中自带的文件存放进来,需要通过手动创建.
8.5.1 数据卷名称映射容器
1.关闭之前练习启动的tomcat容器
#停止所有容器
docker stop $(docker ps -qa)
#删除所有容器
docker rm $(docker ps -qa)
2.创建一个数据卷volume_ssm_tomcat,默认存放路径为:/var/lib/docker/volumes
#新建数据卷
docker volume create volume_ssm_tomcat
3.执行数据卷名称映射
#通过数据卷名称映射容器
docker run -d -p 8080:8080 --name ssm_tomcat
-v volume_ssm_tomcat:/usr/local/tomcat/webapps b8
4.查看volume_ssm_tomcat/_data中是否有容器webapps目录下的内容
#查看目录
cd /var/lib/docker/volumes/volume_ssm_tomcat/_data
#查看文件
ls -l
5.将ssm项目放在/var/lib/docker/volumes/volume_ssm_tomcat/_data目录下,自动部署
6.通过浏览器访问,检测是否部署成功
| 部署成功 |
|---|
8.5.2 数据卷路径映射容器
1.关闭之前练习启动的tomcat容器
#停止所有容器
docker stop $(docker ps -qa)
#删除所有容器
docker rm $(docker ps -qa)
2.执行数据卷路径映射容器
#数据卷路径映射容器
docker run -d -p 8080:8080 --name ssm_tomcat
-v /opt/volume_ssm_tomcat:/usr/local/tomcat/webapps b8
3.测试访问tomcat首页,显示无法访问,
因为通过路径映射容器,路径下的目录是空的,不会将容器中文件存进去,需要自己手动创建
4.切换到volume_ssm_tomcat目录下新建ROOT目录,并在ROOT目录下编辑一份index.html文件
#切换到volume_ssm_tomcat目录
cd /opt/volume_ssm_tomcat
#新建ROOT目录
mkdir ROOT
#编辑index.html文件
cd ROOT/
vi index.html
5.将ssm项目存放在volume_ssm_tomcat下.通过浏览器测试是否部署成功
| 部署成功 |
|---|
九.Dockerfile自定义镜像
在之前的课程中我们学到了通过中央仓库下载镜像
现在我们可以自己动手制作镜像,需要通过Dockerfile文件去指定自定义镜像的信息
9.1 配置Dockerfile
创建自定义镜像需要Dockerfile文件,文件主要配置信息如下
#制作ssm容器镜像(注意.war包需要和Dockerfile在同级目录)
from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm_openapi.war /usr/local/tomcat/webapps
9.2 通过Dockerfile制作镜像
在Windows中新建一个ssm_tomcat文件夹,将Dockerfile和ssm_openapi放入文件夹中,将文件拖入Linux的root目录下
通过命令将其制作成镜像,注意: 命令需要在Dockerfile所在的目录下执行,执行后便可查看镜像信息.
#制作自定义镜像,自定义名称及版本号(注意命令最后有一个点)
docker build -t 镜像名称:版本号 .
十.Docker-Compose
之前通过docker运行镜像需要大量的参数,docker-compose可以帮助我们批量管理容器,只需要将信息在docker-compose.yml中进行配置即可
10.1 下载安装Docker-Compose
10.1.1下载
在GitHub中搜索docker-compose下载1.24.1版本
下载连接:https://github/docker/compose/releases/download/1.24.1/docker-compose-Linux-x86_64
10.1.2 设置权限
将下载好的文件拖入root目录下,将文件进行改名,并赋予可执行权限
#重命名
mv docker-compose-Linux-x86_64 docker-compose
#赋予权限
chmod 777 docker-compose
10.1.3 配置环境变量
配置环境变量
将docker-compose文件移动到/user/local/bin
修改/etc/profile文件,将/user/local/bin配置到PATH中
#移动文件
mv docker-compose /usr/local/bin
#配置PATH
vi /etc/profile
#添加: export PATH=$JAVA_HOME:/usr/local/bin:$PATH
#重新加载配置文件
source /etc/profile
10.1.4 测试
在任意位置输入docker-compose
| 测试结果 |
|---|
10.2 Docker-compose管理MySQL和Tomcat
yml文件是通过key:value的形式指定配置信息
yml中多个配置信息以换行,空格隔开,不能使用TAB制表符
在opt目录下创建docker_mysql_tomcat目录,并放入docker-compose.yml文件
docker-compose.yml文件
version: '3.1'
service:
mysql:
restart: always
image: daocloud.io/library/mysql:5.7.4
container_name: mysql
ports:
-3306:3306
environment:
MYSQL_ROOT_PASSWORD: 1012
TZ: Asia/Shanghai
volumes:
- /opt/docker_mysql_tomcat/mysql_data:/var/lib/mysql
tomcat:
restart: always
image: daocloud.io/library/tomcat:8.5.15-jre8
container_name: tomcat
ports:
- 8080:8080
environment:
TZ: Asia/Shanghai
volumes:
- /opt/docker_mysql_tomcat/tomcat_webapps:/usr/local/tomcat/webapps
- /opt/docker_mysql_tomcat/tomcat_logs:/usr/local/tomcat/logs
10.3 Docker-Compose管理容器
需要在docker-compose.yml文件下运行docker-compose命令
#基于docker-compose.yml文件启动容器
docker-compose up -d
#关闭并删除容器
docker-compose down
#开启已存在的容器
docker-compose start
#关闭容器
docker-compose stop
#重启容器
docker-compose restart
#查看存在容器
docker-compose ps
#查看日志
docker-compose log -f
10.4 Docker-Compose配合Dockerfile
使用docker-compose.yml文件以及Dockerfile文件生成自定义镜像
启动镜像,并由docker-compose去管理
10.4.1 docker-compose文件
编写文件
version: '3.1'
services:
ssm:
restart: always
build:
context: ../
dockerfile: Dockerfile
image: ssm:1.0
container_name: ssm
ports:
- 8081:8080
environment:
TZ: Asia/Shanghai
10.4.2 Docker文件
编写Docker文件
from daocloud.io/library/tomcat:8.5.15-jre8
copy ssm_openapi.war /usr/local/tomcat/webapps
10.4.3 运行
测试结果
#进入docker-compose.yml文件所在位置
cd /opt/docker-tomcat/docker-compose/
#基于docker-compose.yml以及Dockerfile构建自定义对象
#如果该自定义镜像不存在,则会构建自定义镜像
#如果该自定义镜像存在,则会直接运行自定义镜像
docker-compose up -d
#重新构建自定义镜像
docker-compose build
#运行当前内容,并重新构建
docker-compose up ---build
Nginx
一.引言
二.概述
三.Nginx安装
3.1 安装
通过docker-compose安装
在/opt目录下创建docker_nginx,放入docker-compose.yml文件
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- 80:80
3.2 Nginx的配置文件
通过指令进入nginx容器,在/etc/nginx目录下存放着nginx.conf文件
关于核心配置nginx.conf文件
#全局块 worker_processes数值越大,并发能力越强 error_log 错误日志存放位置
worker_processes 1;
error_log /var/log/nginx/error.log warn;
#events块 worker_connections越大,并发能力越强
events {
worker_connections 1024;
}
#http块
http {
include /etc/nginx/mime.types;
default
}
Redis
四.Redis常用命令
4.1 Redis存储结构
1.key-string
- 一个key对应一个value
- 最常用,一般用于存一个值
2.key-hash
一个key对应一个map
常用于存储对象数据
3.key-list
- 一个key对应一个列表
- 使用list实现栈堆结构,有序可重复
4.key-set
- 一个key对应一个集合
- 可用于交集并集差集的操作,无效不可重复
5.key-zset
- 一个key对应一个有序的集合
- 常用于排行榜
6.HyperLogLog
- 计算近似值
7.GEO
- 地理位置
8.BIT
- 一般存储一个字符串,是一个byte[]
4.2 Key-String常用命令
#添加值
set key value
eg:set name peter
#取值
get key
eg:get name
#批量存值
mset key value [key value ...]
eg:mset age 18 sex man
#批量取值
mget key [key...]
eg:mget name age sex
#自增(+1)
incr key
eg:incr age
#自减(-1)
decr key
eg:decr age
#自增(自定义数量)
incrby key increment
eg:incrby age 10
#自减(自定义数量)
decrby key increment
eg:decrby age 10
#新增值,并设置生成时间(内存空间有限,尽量设置生存时间)
setex key second value
eg:setex birth 5 1998
#新增,当key以及存在时,不做任何操作,当key不存在,则新增
setnx key value
eg:setnx name lisi (不做任何操作)
eg:setnx salary 10000 (新增salary:10000)
#在value值原有基础上追加内容
append key value
eg:append birth 1012
#查看value字符串的长度
strlen key
eg:strlen name
4.3 Key-Hash常用命令
#存储数据
hset key field value
eg:hset student id 01
#获取数据
hget key field
eg:hget student id
#批量存储
hmset key field value [field value ...]
eg:hmset student name lisi age 20 sex man
#批量获取
hmget key field [field ...]
eg:hmget student id name age
#自增(自定义增加量
hincrby key field increment
eg:hincrby student age 10
#设值,当key-field已经存在,无事发生,不存在则做新增
hsetnx key field value
eg:hsetnx student age 22 (无事发生)
eg:hsetnx student habby game (新增)
#检查field是否存在,存在返回1,不存在返回0
hexists key feild [field ...]
eg:hexists student age (返回1)
eg:hexists student bbcc (返回0)
#删除key 对应的feild,可删除多个
hdel key field [field ...]
eg:hdel student name age
#获取当前hash结构中的全部field和value
hgetall key
eg:hgetall student
#获取当前hash结构中的全部field
hkeys key
eg:hkeys student
#获取当前hash结构中的全部value
hvals key
eg:hval student
#获取当前hash结构中field的数量
hlen key
eg:hlen student
4.4 Key-List常用命令
#存储数据
#从左侧插入数据
lpush key value [value ...]
eg:lpush habby swim basketball
#从右侧插入数据
rpush key value [value ...]
eg:rpush habby game
#插入后列表为 basketball swim game
#插入数据,如果key存在,且为list结构 则新增,key不存在或不为list结构,则失败
#左侧插入
lpushx key value
eg:lpushx habby run (新增成功)
#右侧
rpushx key value
eg:rpush a a (无事发生)
#修改数据
#根据存储索引下标,覆盖原值,如果下标等于list长度则在最后一位新增数据,超出则修改失败
lset key index value
eg:lset habby 2 program
#弹出获取数据,弹出后数据从list中删除
#左侧弹出
lpop key
eg: lpop habby
#右侧弹出
rpop key
eg: rpop bahhy
#查看指定索引范围的数据,start从0开始,stop从-1开始,代表最后一个,-2为倒数第二个
lrange key start stop
eg: lrange bahhy 0 2
#查看指定索引位置的数据,正数从第一位开始,负数从最后一位开始
lindex key index
eg:lindex habby 2
#查看整个列表的长度
llen key
eg:llen babby
#删除列表中数据 ,删除列表在count值为value的数据.count>0从前往后匹配,count<0从后往前匹配
#count=0删除列表中所有值为value的数据.一一匹配自己到列表中没有或已删除了count个后停止
lrem key count value
eg:lrem habby 2 basketball
#保留列表中的数据.保留索引下标内的的数据,其余数据被被删除
ltrim key start stop
eg: ltrim habby 0 3
#将第一个列表的最后一位数据,移到第二个裂变的第一位
rpoplpush list1 list2
eg: rpoplpush habby love
4.5 Key-Set常用命令
#存储数据
sadd key member [member ...]
eg: sadd lession java php html
#查看数据(无序的)
smembers key
eg: smembers lession
#随机弹出一个数据,count代表弹出数量,默认为1
spop key [count]
eg: spop lession 1
#取多个set的交集
sinter set1 set2 ...
eg:sinter lession class
#取多个set的的并集
sunion set1 set2 ...
eg:sunion lession class
#以第一个set为主的差集(set1{1,2,3} set2{2,6} 则差集为{1,3})
sdiff set1 set2 ...
eg: sdiff lession class
#删除数据
srem key memeber [member ...]
eg: srem lession php html
#查看当前的set集合中是否包含这个值.有则为1,没有则为0
sismember key member
eg:sismeber lession java
4.6 Key-Zset常用命令
#添加数据(score必须四数值且member不允许重复)
zadd key score member [score member ...]
eg:zadd salary 10000 zhangsan 13000 lisi 8000 王五
#修改member的数据,如果member存在,则正常增加score,如果member不存在,则相当于新增
zincrby key increment member
eg:zincrby salary 10000 zhangsan
#查看指定member的分数
zscore key member
eg:zscore salary lisi
#获取zset中数据的数量
zcard key
eg:zcard salary
#根据score的范围查询member数量(小于等于,大于等于)
zcount key min max
eg:zcount salary 12000 20000
#删除zset中数据
zrem key member [member ...]
eg: zrem salary lisi
#根据分数从小到大排序,获取指定范围内的数据(withscores 可以返回对应的score)
#start stop 为索引(0代表第一位,-1代表最后一位)
zrange key start stop [withscores]
eg:zrange salary 0 -1 withscores
#根据分数从大到小排序(withscores 可以返回对应的score)
zrevrange key start stop [withscores]
eg:zrevrange salary 0 -1 withscores
#根据分数的范围从小到大去查看member(withscores 可以返回对应的score)
#添加limit,与mysql中一样,可以分割数据.limit 0 1
#默认大于等于min 小于等于max 可以通过 (min (max 取得大于min小于max的值
#最大值可用+inf 最小值-inf
zrangebyscore key min max [withscores] [limit startpage pagesize]
eg:zrangebyscore salary 12000 20000 withscores limit 0 2
#根据分数从大到小查看,其他与上相同
zrevrangebyscore key max min [withscores] [limit startpage pagesize]
eg:zrevrangebyscore salary 20000 12000 withscores limit 0 2
4.7 Key常用命令
#查看redis中全部的key (*:所有, XXX*:以XXX开头, *xxx: 以xxx结尾)
keys pattern
eg:keys *
#查看key是否存在,1:key存在,0:key不存在
exists key
eg:exists student
#删除key
del key [key ...]
#设置key的生存时间,单位为秒/毫秒,设置能存活多久
expire key second
pexpire key milliseconds
#设置可以的剩余生存时间单位为秒/毫秒,设置能活到什么时候
expireat key timestamp
pexpireat key milliseconds
#查看key的剩余时间,单位秒/毫秒(-2:key不存在,-1:key未设置生存时间)
ttl key
pttl key
#移除key的生存时间(1:成功,0-key未设置生存时间/key不存在)
persist key
#选择操作的库(redis分成16个库)
select 0-15
#移动key到另一个库中
move key db
4.8 库常用命令
#清空当前数据库
flushdb
#清空全部数据库
flushall
#查看当前数据库中有多少key
dbsize
#查看最后一次操作数据到磁盘的时间/时间戳
lastsave
#实时监控redis服务接收到的命令
monitor
版权声明:本文标题:0基础开始微服务(持续更新中......) 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1758234575a2776977.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论