redis运维
vm.overcommit_memory=1#如果这个参数没有修改,可能会引起redis参数丢失,参数很重要。net.core.somaxconn=10240#调大somaxconn数。调整参数后kill掉redis进程,重启redis就不会报以上警告了。systemctl status redis#查看服务。requirepass redispwd :设置redis密码。设置完该参数后,终端退出
1.备份redis配置文件
cp /etc/redis.conf /etc/redis.conf.bak
2.将redis中不要的注释和空行删除
sed -i '/^#/d; /^$/d' /etc/redis.conf
3.redis配置文件
bing 0.0.0.0 :绑定本机所有网卡
daemonize yes:设置后台运行
requirepass redispwd :设置redis密码
4.redis启动
redis-server /etc/etc/redis.conf
5.查看redis启动日志,根据日志提示信息调整内核参数。
tail -f /data/redis/redis.log
(1)根据启动日志中提示的参数进行修改
vim /etc/security/limits.conf
* - nofile 65535
设置完该参数后,终端退出重新登录下会生效。
ulimit -n
(2)内核参数修改
vim /etc/sysctl.conf
net.core.somaxconn=10240 #调大somaxconn数
vm.overcommit_memory=1 #如果这个参数没有修改,可能会引起redis参数丢失,参数很重要。
sysctl -p #内核参数生效
调整参数后kill掉redis进程,重启redis就不会报以上警告了。
6.将redis加入系统管理
vim /etc/lib/systemd/system/redis.service
systemctl daemon-reload #重载服务
systemctl status redis #查看服务
7.redis登录测试
redis-cli -a redispwd
redis登录两种方式:
1.redis-cli -a redispwd #直接把密码跟在客户端后面
2.redis-cli #直接用客户端进入,执行auth redispwd认证后登录
8.redis运维监控命令
RANDOMKEY #随机获取一个key
KEY * #查看所有的key,注意该命令不能随便用,如果key特别多会卡死
SCAN 0 #建议使用该命令获取key,循环获取知道获取完所有key
redis-cli -a redispwd --stat #登录时打印redis监控状态命令
redis-cli -a redispwd monitor #事实监控数据操作,执行该命令,命令行会阻塞住,当有插入key操作时,命令行会打印出插入key的信息。
redis-cli -a redispwd info #获取相关信息
后面跟上某个监控模块,就会单独打印某个模块的信息。
9.redis配置动态更新
redis配置文件更新有两种方式,一种是重启更新,一种是动态更新。
动态更新redis配置:
步骤1:先登录redis
步骤2:使用命令修改redis配置
例如:修改redis密码
config get requirepass #获取配置文件中密码配置
config set requirepass redispwd #登录redis,使用config命令临时生效,但不会写到配置文件中,重启后配置失效。
config rewrite #运行时配置写入配置文件
10.查看redis连接数
info clients #查看当前redis连接数
config get maxclients #查看redis设置的最大连接数
#通过config命令更改配置,保存写入配置文件
config get maxclients #查看默认设置最大客户连接数
config set maxclients 20000 #更改配置最大客户端连接数20000
11.redis慢日志排查
redis慢该如何排查?
(1)先查看系统资源情况
(2)查看慢日志情况
查看慢日志所有配置,这些配置都可以用set命令更改。
修改命令:config set slowlog-log-slower-than 1000 #设置成1毫秒
慢日志的产生:如果查询量较大,则会产生慢日志,执行一条较大的查询命令,当操作时长超过1毫秒就会产生一条慢日志。
redis的key设置有效期
1.redis默认设置的key期限都是永久的。
ttl key:返回key的有效时间,如果返回-1则表示可以是永久的,返回-2表示这个key已经被删除
2.给key设置有效期
experi name 20 #用于已经创建好的key
set name2 test02 EX 20 #用于在创建key时,同时设置有效期。
redis禁用危险命令
在redis配置文件中禁用这些命令,不能动态配置,需要重启redis。
例如:
FLUSHALL #清楚redis所有数据
FLUSHDB #清楚当前DB所有数据
KEYS * #列出所有数据,如果数据量太大,redis会卡住
redis压测工具(了解)
redis-benchmark
redis数据持久化
数据持久化能够保持redis数据不会丢失,即便redis重启,那么重启后,get key依然能找到对应的value。
1.redis数据持久化有两种方式
1.RDB存储(redis默认的持久化存储方式)
2.AOF存储(直接讲redis命令记录下来,保存到文件当中,类似mysql的binlog日志,默认关闭)
2.redis在/etc/redis.conf中配置RDB数据持久化
一个key有变化,就3600秒保存一次。
100个key变化,就300秒保存一次。
10000个key有变化,就60秒保存一次。
(也就是说key变化的越频繁,就保存的越快,另外如果关闭redis服务会立刻进行数据保存)
3.查看redis持久化路径
查看redis持久化数据文件,dump.rdb文件用来存储数据,如果删除该文件,重启redis后,数据将会丢失。
4.关闭RDB数据持久化
1.先删除dump.rdb文件
2.vim /etc/redis.conf
save "" #关闭RDB数据持久化功能。
5.redis中开启AOF持久化存储
开启后执行config rewrite,永久写入配置文件。
开启aof持久化后,持久化文件会变成aof持久化文件。
aof持久化存储是将redis的命令写入到aof文件中,当写入的文件太多时,该文件会越来越大。
为了防止aof文件过大,可以使用redis重新命令,让aof文件中的命令重新排序,重新排序后,aof文件大小会变小
6.重写两种方式:
1.手动重写
在redis中执行命令“BGREWRITEAOF”
2.自动重写
redis的RDB工具分析分析key的大小以及所占资源,性能分析
1.命令:在登录redis时使用--bigkeys命令列出占用资源大的key。
redis-cli -a redispwd --bigkeys
2.删除占用资源大的key
DEL "key"
redis主从复制
redis主从复制介绍:
多台redis数据保持一致,主redis负责数据的写入与读取,从数据库仅用来读取,通过读写分离降低redis服务器压力。
缓解了服务器压力问题。
解决了数据库数据丢失的问题。
主从复制配置
1.主redis配置正常配置,从redis添加两行(指定主redis地址,指定主redis密码)
2.配置完成后重启redis
查看备用redis启动日志
3.登录redis执行info replication查看主从信息。
redis哨兵模式
1.redis哨兵模式简介:
简单的主从复制,当主挂掉后,集群不会带有自动切换模式。
哨兵模式通过哨兵进行监控,当主挂掉后,自动选举出另一个主(master),实现主备自动切换。当挂的redis重启后,会自动变成备用节点。
2.注意:为了防止哨兵单点故障,哨兵也要做成高可用形式,当其中一个哨兵故障时,其他哨兵可以继续进行监控,而且为了保障,为了实现哨兵选举,一般设置奇数个。一般3个没问题。
1主2从3哨兵
3.哨兵模式配置:
主:
备:
4.重启redis
5.部署哨兵
(1)准备配置文件(三个节点哨兵配置完全一样)
vim /etc/sentinel.conf
(2)启动哨兵
redis-sentinel /etc/sentinel.conf
6.验证哨兵模式
模拟master宕机
一主两从,当主挂掉之后,备用的一台redis自动变成主redis
另一台备用redis配置文件自动修改指向新的master
重启挂掉的redis,这台redis自动变成备用redis,并且配置文件指向新的master
模拟一个哨兵挂掉,模拟一个reids宕机
同样会实现故障切换,另一台slave变成master
redis集群模式(cluster)
1.概念:
redis集群模式是指将数据分散存储到集群中多个redis服务器上,相较于redis的主从模式将所有的key全部存储在一台redis上容易造成性能瓶颈,redis集群模式将数据分片存储,提高了redis集群的吞吐量。
同时cluster模式也支持主从模式,和主备切换。
2.cluster集群模式特点:
数据分片,多个入口,故障自动切换。
3.原理
集群模式一共有16384个卡槽,主节点没个节点分布一部分卡槽,当设置k,v的时候redis集群会给这个k分配一个卡槽编号,这个卡槽编号在哪个redis主机点上,那么这个数据就存放在这个redis主节点上。
注意:一般一个主节点对应一个备用节点,主节点和备用节点最好是两台服务器。一般是三个主节点和三个从节点(六台)。
4.操作
(1)为每一个节点创建配置文件
/data/cluster/7002/redis.conf
(2)创建好目录后,将目录拷贝到其他端口的目录下例如/data/cluster/8002/redis.conf,并修改端口为8002,修改路径/data/cluster/8002
(3)将配置文件修改好后,传到其他redis服务器的相应目录下,并修改端口配置和路径配置。
(4)现在三个主节点上启动redis。(以下命令修改启动配置文件路径后在三个主节点上分别执行)
(5)在任意主节点执行命令创建三个cluster集群。
redis-cli -a redispwd --cluster create 192.168.27.128:7000 192.168.27.129:7001 192.168.27.130:7002
创建成功后,提示创建16384个卡槽。
在任意节点执行查看集群状态命令:redis-cli -a redispwd -p 7000 cluster info
redis-cli -a redispwd -p 7000 cluster nodes
redis集群写入数据测试,由于redis是集群模式,集群会根据key进行调度,所以写入后,命令行会自动跳到相应节点的窗口。
例如:k2调度到128服务器上,那么在130服务器是查不到该key值的,需要登录到128服务器redis上进行查询
(6)创建从节点redis
目前三台主redis已经搭建完成,数据全部保存在三台主redis上,但是如果主节点挂掉,那么会有数据丢失的风险。所以需要搭建三台从节点。
启动从节点
128服务器
129服务器
130服务器
从节点加入集群
主从节点规划
查看三个节点的master节点id
从节点加入redis集群命令
redis-cli -a redispwd --cluster add-node --cluster-slave --cluster-master-id 7000的master-id
192.168.27.129:8001(从节点ip) 192.168.27.128:7000(对应的主节点ip)
查看加入后的redis集群状态
验证redis集群高可用
流程:
(1)手动将master1节点的redis停掉进程
(2)查看集群状态,发现slave1已经晋升成为主节点
(3)登录redis8000从节点,查看数据有无丢失
(4)手动恢复原来挂掉的master1,发现master1以slave的角色进行了恢复。
(5)在恢复的7000slave节点上执行晋升命令,将该节点变成master节点,8000自动将为slave节点。
执行info查看角色
更多推荐
所有评论(0)