Linux命令+Redis
目录问题:Linux-服务+网络端口号1.1 在centos6中如何管理服务(centos7也兼容6的服务管理命令)1.2 在centos7中管理服务(centos7天字第一号进程是systemd,只有3和5两个运行级别)问题:1、虚拟机连不上排查顺序1.1 先检查网络图标有没有,如果没有检查 /etc/sysconfig/network-scripts/ifcfg-ens33的配置1.2 再检查
目录
1.1 在centos6中如何管理服务(centos7也兼容6的服务管理命令)
1.2 在centos7中管理服务(centos7天字第一号进程是systemd,只有3和5两个运行级别)
问题:
1、虚拟机连不上
排查顺序
1.1 先检查网络图标有没有,如果没有检查 /etc/sysconfig/network-scripts/ifcfg-ens33的配置
1.2 再检查 vm的编辑中的虚拟网络编辑器,将vmnet8以外的其他虚拟网卡全部移除
1.3 关闭主机的防火墙和杀毒软件
2、ssm整合-springboot体验
Linux-服务+网络端口号
服务:一般在后台运行
centos6有7种运行级别,系统启动时会按照配置的一个运行级别启动,然后使用init.d再根据此运行级别去判断服务是否在此级别中启动。到centos7时只保留了3和5
1.1 在centos6中如何管理服务(centos7也兼容6的服务管理命令)
1- chkconfig --list :查看服务运行级别
2- service 服务名 status 查询服务的状态,firewalld 表示防火墙的服务名
3- service 服务名 start 启动服务
4- service 服务名 stop 停止服务
防火墙:端口号一般都被防火墙过滤掉,只暴露22端口号
5- ll /etc/init.d/ 查看init进程管理的服务文件夹
6- chkconfig --level 2 network off 设置指定的服务在指定运行级别关闭
7- chkconfig --level 2 network on 设置指定服务在指定运行级别启动
1.2 在centos7中管理服务(centos7天字第一号进程是systemd,只有3和5两个运行级别)
1- systemctl list-unit-files 查看所有的服务列表
ctrl+c 退出列表
查询指定的服务:systemctl list-unit-files |grep firewalld
2- systemctl status 服务名 :查看服务器的状态
3- systemctl start 服务名 :启动指定服务
4- systemctl stop 服务名:停止服务
5- systemctl diable 服务名:设置服务开机禁止启动
6- systemctl enable 服务名: 设置服务开机自启
7- systemctl get-default : 查看当前系统的运行级别
8- systemctl set-default multi-user.target/graphical.target: 设置系统的运行级别
1.3 网络端口号查询
netstat -anp | grep 端口号
将springboot项目上传到虚拟机的/opt目录下
java -jar xxxx.jar 开启Tomcat服务器
主机浏览器访问:http://虚拟机ip地址:8080/hello
如果虚拟机控制台没有报错,虚拟机防火墙将请求拦截了
需要先将防火墙的服务器进行关闭 systemctl stop firewalld.service,再打开Tomcat服务器
netstat -anp|grep 8080
kill -9 1490 :杀死占用端口号的进程
2、Linux-用户权限命令(了解)
id 用户名: 查看用户
useradd 用户名:新增用户
通过useradd的方式添加的用户都是普通用户,所有的用户的家目录都会创建在/home目录下
passwd 用户名:设置密码
whoami: 查看当前正在使用系统的用户
who am i :查看登录的用户
su 用户名: 切换用户
从超级管理员切换到普通用户不用输入密码
从普通用户到root需要输入密码
userdel -r 用户名:删除用户和它的/home目录下的家目录文件
[root@localhost opt]# userdel -r hello
userdel: user hello is currently used by process 4290
表示:用户hello 正被当前进程4290使用。杀死该进程即可。
groupadd 组名: 创建用户组
usermod -g 组名 用户名: 将用户添加到组中
useradd -g 组名 新用户名:新创建用户并分配到组中
groupdel 组名:删除组
groupmod -n 新组名 旧组名:修改组名
/etc/passwd :存储用户的信息
/etc/shadow:存储用户的影子信息[密码]
/etc/group :组
权限:
列表中的第一列代表文件类型权限
代表权限的第一列除了.,剩下10位
第一位:代表文件类型 d代表文件夹,-代表文件, l代表链接
第2~4位: u 代表文件拥有者的权限
rwx: 如果使用-代表其中一个,就表示没有这个权限(r-x 可读可执行 不能写)
r:read 读权限 , w:write写权限 , x:excute执行权限
第5~7位: g 代表文件拥有者所在组的成员拥有的权限
第8~10位:o 代表和文件拥有者不再同一个组的其他成员的权限
修改文件夹的权限:
第一种(不推荐):直接使用 rwx表示权限进行设置
chmod g=rx laohan :添加权限
chmod g-rx laohan:删除laohan文件夹的组的权限
第二种(推荐):将权限使用数字描述
r=4 w=2 x=1
chmod 710 laohan : 第一组权限全部设置,第二组权限设置x,第三组没有权限
第三列代表文件的拥有者
第四列代表文件拥有者所在的组
chgrp 组名 文件夹名:修改文件夹所在组
chown -R 用户名 文件夹名:递归修改文件夹和他内部所有文件的拥有者
3、Linux-安装卸载命令
3.1 本地安装
rpm -qa |grep -i firewalld :查询已安装的程序,并忽略大小写筛选结果
rpm -e 安装包名: 卸载已安装的程序
rpm -ivh 安装包名: 安装程序
安装操作系统时,系统压缩包自带了非常多的应用,可以在光驱加载的ISO镜像中找到火狐浏览器的安装包(/run/media/root/CentOS 7 x86_64/Packages)
cd /run/media/root/CentOS\ 7\ x86_64/Packages/
rpm -ivh firefox-52.2.0-2.el7.centos.x86_64.rpm
3.2 远程联网安装
CentOS提供了中央软件库,可以通过yum命令远程连接下载程序自动安装
yum list |grep -i firefox: 联网搜索指定的程序安装包
yum install firefox.x86_64 : 安装指定的程序
4、Linux-开发环境搭建
4.1 jdk
1、拷贝课件中的已经下载好的jdk到虚拟机的/opt目录下
2、切换到opt目录下,解压缩压缩包
tar -zxvf 压缩包名 :解压缩所有的压缩包
jdk解压可用,无需安装,但是jdk的命令在bin目录下[/opt/jdk1.8.0_152/bin]
在控制台执行jdk的命令时,系统默认从path环境变量中查找对应的命令,我们自己解压的jdk没有配置到环境变量中,所以不能使用
3、将自己解压的jdk的bin目录配置到linux系统的环境变量中
vim /etc/profile
在文件最后:shift+g
JAVA_HOME=/opt/jdk1.8.0_152
PATH=/opt/jdk1.8.0_152/bin:$PATH
export JAVA_HOME PATH
source /etc/profile:重新加载环境变量
==== 启动tomcat时
1.可以配置全局路径
2.可以通过./的方式来启动
在windows里执行的脚本是startup.bat,而在linux里执行的脚本是startup.sh。
4.2 mysql
1、检查是否存在已安装的mysql
[root@atguigu bin]# rpm -qa|grep -i maria
mariadb-libs-5.5.56-2.el7.x86_64
2、卸载已安装的mysql[mysql安装时会安装其他的多个依赖]
rpm -e --nodeps mariadb-libs
3、检查mysql以后要使用的文件夹的权限[/tmp]
chmod 777 /tmp
4、安装mysql
rpm -ivh MySQL-client-5.5.54-1.linux2.6.x86_64.rpm
rpm -ivh MySQL-server-5.5.54-1.linux2.6.x86_64.rpm
5、检查是否安装成功
rpm -qa|grep -i mysql
6、连接mysql
如果报以下错误,表示mysql服务没有启动
systemctl start mysql
ps -aux|grep -i mysql
//连接mysql,初始化安装mysql没有密码
mysql -hlocalhost -P3306 -uroot -p
7、修改mysql编码
//连接mysql后,查看mysql的字符编码
show variables like '%char%';
//mysql默认编码为latin1,需要修改为UTF-8
//mysql安装后,配置文件保存在 /usr/share/mysql/my-huge.cnf
linux mysql启动时,优先在/etc下查找my.cnf配置文件作为mysql的配置,如果/etc下没有此文件,mysql再到/usr/share/mysql/my-huge.cnf.
//将my-huge配置文件拷贝到/etc下一份,并改名为my.cnf
cp my-huge.cnf /etc/my.cnf
//修改/etc/my.cnf,设置mysql的编码格式为utf-8
在17行[client]下添加
default-character-set=utf8
在26行[mysqld]下添加
character_set_server=utf8
character_set_client=utf8
collation-server=utf8_general_ci
在138行[mysql]添加
default-character-set=utf8
保存退出
重启mysql服务加载修改后的配置文件
service mysql restart
mysql -uroot -p
8、修改mysql密码
mysql5.5 密码存在mysql 库中的user表中
mysql保存用户信息时存在mysql.user表中
host代表ip地址,user代表账号,password代表密码,xxx_priv 代表权限
访问mysql时,mysql识别用户是通过 登录账号+登录时的ip地址组合判断账号
root@localhost
删除localhost root以外的其他用户: delete语句+条件删除
修改用户密码:
select host ,user,password , select_priv from mysql.user;
update mysql.user set password = password('123123');
或者 set password=password('123456');
修改后需要重启mysql服务: service mysql restart
9、远程连接mysql[主机使用sqlyog去连接虚拟机中的mysql]
原因: mysql user表中,只有localhost地址才可以使用root用户连接mysql服务
修改user表中的root@localhost用户,将host修改为%(通配符,统配所用)
重启mysql,再次使用sqlyog远程连接
10、安装web测试工具 ab
使用yum安装: yum install -y httpd-tools
使用:
ab --help
ab -n8000 -c800 http://192.168.1.130:8080/hello
5、Nosql数据库简介
技术发展
Web1.0时代
Web2.0时代
解决CPU及内存压力
解决IO压力
NoSQL数据库概述
- NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。
- NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。
- 不遵循SQL标准。
- 不支持ACID。
- 远超于SQL的性能。
NoSQL使用场景
- 对数据高并发的读写
- 海量数据的读写
- 对数据高可扩展性的
NoSQL不适用场景
- 需要事务支持
- 基于sql的结构化查询存储,处理复杂的关系,需要即席查询。
- (用不着sql的和用了sql也不行的情况,请考虑用NoSql)
Memcached
Redis
- 几乎覆盖了Memcached的绝大部分功能
- 数据都在内存中,支持持久化,主要用作备份恢复
- 除了支持简单的key-value模式,还支持多种数据结构的存储,比如 list、set、hash、zset等。
- 一般是作为缓存数据库辅助持久化的数据库
Mongdb
- 高性能、开源、模式自由(schema free)的文档型数据库
- 数据都在内存中, 如果内存不足,把不常用的数据保存到硬盘
- 虽然是key-value模式,但是对value(尤其是json)提供了丰富的查询功能
- 支持二进制数据及大型对象
可以根据数据的特点替代RDBMS ,成为独立的数据库。或者配合RDBMS,存储特定的数据。
6、redis简介
Redis概述
- Redis是一个开源的key-value存储系统。
- 和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。
- 这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
- 在此基础上,Redis支持各种不同方式的排序。
- 与memcached一样,为了保证效率,数据都是缓存在内存中。
- 区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件。
- 并且在此基础上实现了master-slave(主从)同步。
配合关系型数据库做高速缓存
- 高频次,热门访问的数据,降低数据库IO
- 分布式架构,做session共享
多样的数据结构存储持久化数据
redis之前的版本只支持linux
只有linux才能最优化的使用redis
7、redis安装+启动停止
7.1 将redis安装包拷贝到 虚拟机的/opt目录下
7.2 解压缩redis的压缩包:tar -zxvf redis.tar.gz
7.3 查看redis的文件夹发现解压之后的src是redis的源码,需要先编译才能安装
redis是使用c语言开发的,需要使用c语言的编译命令
在redis目录下执行:make命令时,报错,原因:系统中没有安装c语言的环境
1、安装c语言和c++的语言环境
yum install -y gcc
yum install -y gcc-c++
gcc -v
g++ -v
查看是否安装成功
2、删除上次make产生的错误文件
make distclean
3、再执行make进行编译
4、再执行安装命令: make install
5、如果执行 redis-server 能够看到redis的启动界面,就代表redis安装成功
ctrl+c 可以关闭redis-server
redis安装之后,命令存放在usr/local/bin下,命令可以在任意的地方执行
redis-server :redis服务端启动命令
redis-cli :redis客户端启动的命令
8、修改redis为后台启动
redis默认前台启动(阻塞启动)
8.1 在/下创建存放redis配置文件的文件夹
mkdir /myredis
8.2 拷贝redis的配置文件到/myredis目录下
cp /opt/redis-4.0.0/redis.conf /myredis/
8.3 编辑 /myredis/redis.conf 设置后台启动
vim /myredis/redis.conf
136行设置daemonize 改为yes
保存退出
8.4 指定配置文件启动redis服务
redis-server /myredis/redis.conf
服务端默认端口号:6379
8.5 redis客户端连接redis
redis-cli 默认连接本机的6379端口号的redis服务端
ctrl+c退出redis-cli连接
redis-cli -h 127.0.0.1 -p 6379 :连接指定ip指定端口的redis服务
8.6 关闭redis服务
在redis-cli的连接中,ctrl+c只会关闭redis客户端
方式1: 在linux命令中执行 redis-cli -h 127.0.0.1 -p 6379 shutdown
方式2:如果在redis-cli的连接中 shutdown
方式3: 可以通过redis进程id杀死进程 kill 进程id
8.7 redis简单使用+特点
redis默认有16个库。一般使用默认的索引为0的库:select 0
dbsize :查看redis存储数据的条数
flushdb : 清空当前库(慎用)
flushall: 清空redis所有的库
内存数据库存储数据都是在内存中操作,内存操作速度非常快,每个命令执行时的时间短
Redis是单线程+多路IO复用技术
Memcached 是串行+多线程的方式
redis和Memcached三点不同: 支持多数据类型,支持持久化,单线程+多路IO复用
9、redis-key操作
1、查看所有的键:keys *
2、判断某个键是否存在: exists 键名
返回1代表存在,0代表不存在
3、查看键对应值的类型: type 键名
4、删除指定的键(键在值在,键光值亡): del 键名
5、给键设置过期时间: expire 键名 秒数
6、查看键的过期时间: ttl 键名
返回>=0的数字,代表剩余数字对应的秒数
返回-2 ,代表键已过期被删除
返回-1 ,代表键永不过期
10、redis-五大数据类型-string
redis最常使用的数据类型就是string类型: java对象可以转为字符串,图片也可以转为图片
redis中string类型的大小最大可以为512m,redis的字符串二进制安全
1、向redis中存入string键值对:set k v
如果键相同,后设置的值会覆盖之前的
2、获取redis中指定键的值: get k
3、给redis中指定键的值追加内容: append k appendStr
4、获取键的值的长度: strlen key
5、当键不存在时才设置键值对: setnx k v
分布式锁
6、设置值自增1 : incr k
如果k的值已存在,必须时整形才可以自增
如果k不存在,默认在0的基础上+1
应用场景: 计数器、密码今天输错的次数、秒杀库存自减
7、设置值自减1 : decr k
8、自定义步长增减: incrby k count , decrby k count
9、设置键值对同时设置过期时间: setex key secods val
使用场景: 保存手机验证码
10、批量操作
1、批量存入多个键值对: mset k v k v ....
2、批量获取多个键的值: mget k1 k2 k3...
3、批量设置键值对当键不存在时: msetnx k1 v1 k2 v2...
当有一个键如果存在时,所有的数据都保存失败
所有的键都不存在时,才可以存储成功
redis命令具有原子性,命令执行时,必须成功或者失败
java中的i++是否是原子操作?
不是,执行时,分为三步:先获取i的变量的值,执行i++操作,将计算后的结果设置到内存中
i=0;两个线程分别对i进行++100次,值是多少?2~200
11、获取值指定范围内的内容:getrange k start end
获取时,start和end索引都包含
end如果是-1 代表获取到最后
12、替换字符串指定范围的内容:setrange k start replacestr
13、设置值并返回被替换的内容:getset k newVal
更多推荐
所有评论(0)