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查看角色

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐