1 Redis
1.1 Redis安装
- 解压redis文件:tar -xvf redis-5.0.4.tar.gz
- 移动文件/修改文件:mv redis-5.0.4.tar.gz software/
mv redis-5.0.4.tar.gz redis - 安装Redis
命令1: make
命令2: make install
1.2 修改redis.conf配置文件
- 修改IP绑定:bind ***
- 关闭保护模式:protected-made no
- 开启后台启动:daemonize yes
- 投票机制:sentinel monitor mymaster host port 1(投票生效数)
- 投票时间:sentinel down-after-milliseconds mymaster 3000
1.3 Redis命令
- 启动redis: redis-server redis.conf
- 检查redis服务项: ps -ef |grep redis
- 进入redis客户端: redis-cli -p 6379
- 关闭redis: redis-cli -p 6379 shutdown
kill -9 pid号 - 复制目录:cp -r * *
- 删除目录:rm -f *.log
- 检查redis节点的状态信息:info replication
- 实现主从挂载:slaveof host port
- 关闭所有redis服务器:rm -rf sentinel
1.4 Redis持久化策略
- RDB模式记录的是内存数据的快照.持久化效率较高. 快照只保留最新的记录.
- AOF模式由于记录的是实时的操作过程,所以持久化文件较大.需要定期维护.
1.5 内存优化策略
- LRU算法:最近最少使用
- LFU算法:即最不经常使用页置换算法
- 随机算法
- TTL算法:根据剩余的存活时间,将马上要超时的数据提前删除.
1.6 配置内存优化策略
- volatile-lru 在设定了超时时间的数据中,采用lru算法
- allkeys-lru 在所有的数据中,采用lru算法
- volatile-lfu 在设定了超时时间的数据中,采用lfu算法
- allkeys-lfu 所有数据采用lfu算法
- volatile-random 设置超时时间数据的随机算法
- allkeys-random 所有数据的随机
- volatile-ttl 将设定了超时时间的数据,提前删除.
- noeviction 默认规则 如果设定noeviction 则不删除数据,直接报错返回.
1.7 缓存相关问题
问题出发点:
由于缓存失效,导致大量的用户的请求,直接访问数据库服务器.导致负载过高,从而引发整体宕机的风险!!!
-
缓存穿透
说明: 用户频繁访问数据库中不存在的数据,可能出现缓存穿透的现象.如果该操作是高并发操作,则可能直接威胁数据库服务器.
解决方案:
1.采用IP限流的方式 降低用户访问服务器次数. IP动态代理(1分钟变一次)
2.微服务的处理方式: 利用断路器返回执行的业务数据即可不执行数据库操作 从而保护了数据库.
3.微服务处理方式: API网关设计. 不允许做非法操作 -
缓存击穿
说明: 由于redis中某个热点数据由于超时/删除等操作造成数据失效.同时用户高并发访问该数据,则可能导致数据库宕机.该操作称之为 缓存击穿.
解决方案: 可以采用多级缓存的设计. 同时数据的超时时间采用随机数的方式. -
缓存雪崩
说明: 由于redis内存数据大量失效.导致用户的访问命中率太低.大量的用户直接访问数据库,可能导致数据库服务器宕机. 这种现象称之为缓存雪崩.
解决:
1.采用多级缓存.
2.设定不同的超时时间
3.禁止执行 flushAll等敏感操作.
2 数据库备份策略
无法连接重启网卡命令:
service NetworkManager stop
chkconfig NetworkManager off 永久关闭 Manager网卡
service network restart 重启network网卡
3 tomcat集群部署
启动服务器
java -jar 8081.war & java -jar 8082.war & java -jar 8083.war &
关闭服务器
命令说明:
1."|" 管道 管道之前查询的结果,当做管道之后的参数(条件)进行操作.
2. kill 杀死进程
kill PID号 普通关闭进程 (弱关闭)
kill -15 PID号 必须关闭,但是可以执行后续操作.
kill -9 PID号 强制关闭, 不给任何时间执行后续任务.
后台运行开启:
nohup java -jar 8081.war => 8081.log &
nohup java -jar 8082.war => 8082.log &
3.1 查看命令
cat 输出文件所有的内容
more 输出文档所有的内容,分页输出,空格浏览下一屏,q退出
less 用法和more相同,只是通过PgUp、PgOn键来控制
tail 用于显示文件后几号,使用频繁
tail -10 nginx.conf 查看nginx.conf的最后10行
tail –f nginx.conf 动态查看日志,方便查看日志新增的信息
ctrl+c 结束查看
3.2 脚本启动
- 编辑start.sh的脚本文件: vim start.sh
- 指定脚本文件头、内容.
- 执行脚本: sh start.sh
4 Linux命令
- 解压:tar -zxvf *
- 移动安装包:mv jdk software/
- 修改文件名称:mv 1 2
- 编辑文件: vim /etc/profile
4.1 cd命令集
ifconfig/ip addr 检查IP地址
pwd 检查当前的位置
tab键 自动补齐(注意唯一性)
cd命令是linux中最基本的命令语句,必须熟练掌握
cd / 返回根目录
cd ~ 用户主目录
cd . 当前目录
cd …返回到上一级目录
cd /usr/ 进入到usr目录
cd – 返回上一个目录
cd 直接回家
4.2 ls目录和文件
ls –l 详细格式,文件权限,时间
ll 和ls –l作用相同
ls *.txt 查看所有的txt类型文档
4.3 目录操作
mkdir 创建目录
mkdir a 创建 a目录
mkdir -p a/b 创建 a目录,并在a目录里创建b目录
mkdir -m 777 c 创建一个权限为777的C目录
rmdir 删除目录(如果目录里有文件,则不能用此命令)
4.4 Vi/vim创建/查看/编辑文件
命令行:Esc切换到命令行模式。
编辑模式:
按i,在光标前开始编辑
按a,在光标后开始编辑
按o,在当前行的下一行开始编辑
按u, 撤销之前的操作
底行模式:按 shift+:冒号。
:q! 不保存退出
:wq 保存退出
:/world 从当前光标处,向上查找world关键字
:?world 从当前光标处,向后查找world关键字
4.5 删除文件
rm 删除文件
rm n.txt 提示y删除n放弃
rm –f n.txt 不提示
rm –rf dirname 不提示递归删除目录下所以内容
rm –rf * 删除所有文件
rm –rf /* 删除所有子目录所有和文件
4.6 复制和移动文件
cp复制文件
cp nginx.conf n.txt
cp –R tomcat1 tomcat2 #复制整个目录
mv 修改文件名,移动文件
mv n.txt m.txt 修改文件名称
4.7 浏览文件
cat 输出文件所有的内容
more 输出文档所有的内容,分页输出,空格浏览下一屏,q退出
less 用法和more相同,只是通过PgUp、PgOn键来控制
tail 用于显示文件后几号,使用频繁
tail -10 nginx.conf 查看nginx.conf的最后10行
tail –f nginx.conf 动态查看日志,方便查看日志新增的信息
ctrl+c 结束查看
4.8 打包命令
tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件,再以gzip压缩命令压缩成name.tar.gz的文件。
-c 创建一个新的tar文件
-v 显示运行过程的信息
-f 指定文件名
-z 调用gzip压缩命令进行压缩
-t 查看压缩文件的内容
-x 解开tar文件
tar –cvf n.tar ./* 压缩当前目录下的所有文件和目录,文件名为n.tar
tar –xvf n.tar 解压压缩包中的文件到当前目录(如果长时间未解压成功 Ctrl+C推出)
tar –cvzf m.tar.gz ./* 压缩文件
tar -zxvf m.tar.gz 解压m.tar文件到当前目录
4.9 grep命令
grep root /etc/passwd 在文件中查找关键字root
grep root /etc/passwd –-color 高亮显示
grep root /etc/passwd –A5 –B5 高亮显示,A后5行,B前5行
grep -n root /etc/passwd 查找并显示行数
grep -v root /etc/passwd 取反,查出不含root的数据