您现在的位置是:首页 > 数据库 > RedisRedis
redis高级(图文)
第十三双眼睛2020-12-20【Redis】人已围观
简介redis高级部分包括数据的备份及恢复,安全,主从集群等。
redis数据备份与恢复
redis命令用于创建当前数据库的备份,基本用法如下:
该命令将在redis安装目录种创建redis.rdb文件。
恢复数据
如果需要恢复数据,只需要将该文件放置在redis安装目录种,并启动redis服务即可。
创建数据库的备份文件也可以使用bgsave命令。
redis性能测试
redis性能测试是同时执行多个命令来实现的,
redis性能测试的基本命令如下:
redis-benchmark [option] [option value]
注意:该命令是在redis的安装目录下执行的,而不是redis的客户端中
以下实例中,同时执行10000个请求来检测性能
redis 性能测试可选参数如下:
-h 指定服务器主机名
-p 指定服务器端口
-s 指定服务器socket
-c 指定并发连接数
-n 指定请求数
-d 以字节的形式指定get/set 参数的大小
-k 1=keepalive 0=reconnect
-r get set incr 使用随机key sadd使用随机值
-p 通过管道传输<numreq>请求
-q 强制退出redis,仅显示query/sec值
--csv 以csv格式输出
-l 生成循环,永久执行测试
-t 仅运行以逗号分隔的测试命令
-i idle 模式,仅打开n个idle链接并等待
以上实例中主机为本机,测试的命令 为 set lpush 请求数为10000,参数让结果只显示每秒执行的请求数
客户端链接
最大连接数,maxclients的默认值是10000,也可以在配置文件中对这个值进行修改。
客户端命令:
client list :返回客户端连接列表
client setname 设置当前连接的名称
client getname 获取当前连接的名称
client pause 挂起客户端连接,指定挂起的时间以毫秒计
client kill 关闭当前客户端连接
redis主从复制
当redis出现问题时,如果只有一个节点,则数据会发生丢失,这时候就需要增加redis备份节点,来保证数据的安全性。下面进行redis主从复制的配置,仅仅实现数据的备份,不实现故障自动转移
在主节点的配置文件中修改如下配置,保证redis服务器可以从外部连接,同时保证防火墙关闭
bind 0.0.0.0
在从节点的配置文件中找到如下配置项:
replicaof <masterip> <masterport> ,这个配置项目在有的版本的redis中是slaveof <masterip> <masterport>
改成 主节点的ip 和端口 如 replicaof 192.168.184.129 6379
然后启动主节点和从节点,在主节点中写入一些数据如:set name aaa,在从节点中查看,get name
可以看到,从节点中也取到了对应的数据,如下图
而且,从节点只能作为主节点的数据备份,不能直接进行数据的写操作。我们不妨来执行一下 set name bbb,报错了。如下图
redis的故障切换
上面介绍的主从复制,只能解决数据的备份问题,不能解决redis服务器的故障切换问题,下面介绍如何实现redis的主从切换
要实现redis的故障切换,需要在之前的基础上,启动一个叫做redis sentinel的服务,翻译为redis哨兵。
先修改配置文件sentinel.conf
bind 0.0.0.0(这里是实现环境,就这么改,到了真实环境,需要需要改成机器ip)
sentinel monitor mymaster 192.168.184.128 6379 1 (这句话是最关键的)
mymaster是哨兵组名称,自定义即可。
192.168.184.128 6379 为要监控的主节点ip
1 代表有多少个哨兵通过投票后,可以将从节点切换为主节点,这个一般要设置为奇数,因为,如果为偶数的话,会有票数相等的可能。
将redis主从节点都运行起来以后,输入./redis-sentinel ../sentinel.conf 启动sentinel服务
显示出如上图以后,就说明sentinel已经启动成功了。
现在我们在主节点上执行一下info replication 命令
从上图可以看出,有两个从节点。
现在我们将主节点关闭,看看会有什么反应
在主节点执行以下./redis-cli shutdown 命令
可以看到,主节点已经变了,由原来的128变成了133.
当我们再次启动之前的主节点。可以看到它已经是从节点了。
到此,redis的故障转移就实现了。
redis集群
上面已经可以实现主节点在故障的时候,自动的切换到从节点,但是没有解决高并发访问的问题。下面来配置redis集群,可以解决redis的高并发访问的问题
由于redis集群至少需要3个主节点,而且,每个主节点还需要至少一个从节点,因此最少需要6个redis实例。但是没有那么多的虚拟机,因此,这里通过在一台机器上不同的端口启动一个服务来模拟多个机器,效果是一样的。
我们在/usr/redis-cluster 目录下创建7001-7006 一共7个文件夹,用来存放每个服务的配置文件,将redis.conf配置文件复制到每个文件夹一份,并将如下内容进行修改,
bind 0.0.0.0 这里修改为任意机器都可以连接,具体生产环境中另作配置
port 7001 (和对应的文件夹名称一致)
dbfilename dump-7001.rdb (和对应的文件夹名称一致)
appendonly yes 将数据持久化机制改为aof
appendfilename "appendonly-7001.aof" (改为和对应的文件夹名称一致)
cluster-enabled yes 开启集群配置
cluster-config-file nodes-7006.conf (改为和对应的文件夹名称一致)
cluster-node-timeout 5000 超时时间 (可以改也可以不改)
将这些配置每个文件夹放一份
然后执行./redis-server ../usr/redis-cluster/7001-7006/redis.conf 启动6个实例
在redis 5.0版本以前,还需要安装ruby,这个不是很方便,而5.0以后,就不需要了,因此,我们下载的redis是5.0以后的
执行命令./redis-cli --cluster create 192.168.184.141:7001 192.168.184.141:7002 192.168.184.141:7003 192.168.184.141:7004 192.168.184.141:7005 192.168.184.141:7006 --cluster-replicas 1
--cluster-replicas 1 表示为每个主节点创建一个从节点
执行完毕后,会打印出一份预想的配置,如果觉得没有问题,输入yes即可完成集群的创建,如下图
最后显示all 16384 slots covered
验证集群 输入命令 ./redis-cli -h 192.168.184.141:7001 -p 7001 -c 进行连接 -c表示以集群模式连接
连接成功以后,输入cluster info 查看集群信息
查看集群节点信息 输入命令 cluster nodes
存取数据
重启集群(保留原有集群)
将集群的各个节点关闭,再启动起来即可
重启集群(删除原有集群)
相当于重新配置集群,删除原有集群产生的文件,重新配置一遍即可
启动redis集群后,设置密码
访问密码如果没有再redis.conf中设置,也可以在启动redis后,动态设置,用config set 命令来设置
集群主节点的增加
再启动一个redis服务 7007
可以看到 7007的redis服务已经启动了
集群从节点的增加
执行命令:./redis-cli --cluster add-node 192.168.184.141:7007 192.168.184.141:7001
192.168.184.141:7007 表示新节点 192.168.184.141:7001 表示集群中任意一个节点
上图显示,已经成功添加了,添加后,默认是主节点。但是此时,新添加的节点是空的,没有任何的槽
这时候需要重新分配hash槽
询问 想要移动多少个hash 槽 我们输入1000
询问由哪个节点来接收100个槽,输入我们刚才添加的新节点
这里有两种方式可以选,选择all ,系统会自动进行平均分配
输入done 表示输入完成
分配完毕以后,查看集群信息
发现集群已经是4个master了。
这个新节点已经分配了hash 槽了
集群中从节点的添加
在启动一个redis服务
./redis-cli --cluster add-node --slave 192.168.184.141:7008 192.168.184.7001
执行上面的命令,会给集群中添加一个从节点,但是没有指定具体的主节点,会默认分配从节点最少的,如果所有主节点的从节点个数都一样,则随机
添加完节点后,默认是主节点,登陆节点,执行命令cluster replicate cd850fb39e055370e2e1a302daa6c611bf7d0a83
cd850fb39e055370e2e1a302daa6c611bf7d0a83 表示主节点id
这样,此节点就成为了指定主节点的从节点
集群从节点的删除
执行命令 ./redis-cli --cluster del-node 192.168.184.141:7001 要删除的节点id
可以看到节点已经被删除了
集群主节点的删除
主节点要想删除,得先将上面得槽全部移除,再执行上面得删除命令
可以看到,现在得集群数量已经由原来得4变为了3,192.168.184.141:7007 上得槽也已经是0
执行删除命令 ./redis-cli --cluster del-node 192.168.184.141:7001 cd850fb39e055370e2e1a302daa6c611bf7d0a83
可以看到,主节点已经被删除了
查询进程,也显示是6个了。
redis命令用于创建当前数据库的备份,基本用法如下:
该命令将在redis安装目录种创建redis.rdb文件。
恢复数据
如果需要恢复数据,只需要将该文件放置在redis安装目录种,并启动redis服务即可。
创建数据库的备份文件也可以使用bgsave命令。
redis性能测试
redis性能测试是同时执行多个命令来实现的,
redis性能测试的基本命令如下:
redis-benchmark [option] [option value]
注意:该命令是在redis的安装目录下执行的,而不是redis的客户端中
以下实例中,同时执行10000个请求来检测性能
redis 性能测试可选参数如下:
-h 指定服务器主机名
-p 指定服务器端口
-s 指定服务器socket
-c 指定并发连接数
-n 指定请求数
-d 以字节的形式指定get/set 参数的大小
-k 1=keepalive 0=reconnect
-r get set incr 使用随机key sadd使用随机值
-p 通过管道传输<numreq>请求
-q 强制退出redis,仅显示query/sec值
--csv 以csv格式输出
-l 生成循环,永久执行测试
-t 仅运行以逗号分隔的测试命令
-i idle 模式,仅打开n个idle链接并等待
以上实例中主机为本机,测试的命令 为 set lpush 请求数为10000,参数让结果只显示每秒执行的请求数
客户端链接
最大连接数,maxclients的默认值是10000,也可以在配置文件中对这个值进行修改。
客户端命令:
client list :返回客户端连接列表
client setname 设置当前连接的名称
client getname 获取当前连接的名称
client pause 挂起客户端连接,指定挂起的时间以毫秒计
client kill 关闭当前客户端连接
redis主从复制
当redis出现问题时,如果只有一个节点,则数据会发生丢失,这时候就需要增加redis备份节点,来保证数据的安全性。下面进行redis主从复制的配置,仅仅实现数据的备份,不实现故障自动转移
在主节点的配置文件中修改如下配置,保证redis服务器可以从外部连接,同时保证防火墙关闭
bind 0.0.0.0
在从节点的配置文件中找到如下配置项:
replicaof <masterip> <masterport> ,这个配置项目在有的版本的redis中是slaveof <masterip> <masterport>
改成 主节点的ip 和端口 如 replicaof 192.168.184.129 6379
然后启动主节点和从节点,在主节点中写入一些数据如:set name aaa,在从节点中查看,get name
可以看到,从节点中也取到了对应的数据,如下图
而且,从节点只能作为主节点的数据备份,不能直接进行数据的写操作。我们不妨来执行一下 set name bbb,报错了。如下图
redis的故障切换
上面介绍的主从复制,只能解决数据的备份问题,不能解决redis服务器的故障切换问题,下面介绍如何实现redis的主从切换
要实现redis的故障切换,需要在之前的基础上,启动一个叫做redis sentinel的服务,翻译为redis哨兵。
先修改配置文件sentinel.conf
bind 0.0.0.0(这里是实现环境,就这么改,到了真实环境,需要需要改成机器ip)
sentinel monitor mymaster 192.168.184.128 6379 1 (这句话是最关键的)
mymaster是哨兵组名称,自定义即可。
192.168.184.128 6379 为要监控的主节点ip
1 代表有多少个哨兵通过投票后,可以将从节点切换为主节点,这个一般要设置为奇数,因为,如果为偶数的话,会有票数相等的可能。
将redis主从节点都运行起来以后,输入./redis-sentinel ../sentinel.conf 启动sentinel服务
显示出如上图以后,就说明sentinel已经启动成功了。
现在我们在主节点上执行一下info replication 命令
从上图可以看出,有两个从节点。
现在我们将主节点关闭,看看会有什么反应
在主节点执行以下./redis-cli shutdown 命令
可以看到,主节点已经变了,由原来的128变成了133.
当我们再次启动之前的主节点。可以看到它已经是从节点了。
到此,redis的故障转移就实现了。
redis集群
上面已经可以实现主节点在故障的时候,自动的切换到从节点,但是没有解决高并发访问的问题。下面来配置redis集群,可以解决redis的高并发访问的问题
由于redis集群至少需要3个主节点,而且,每个主节点还需要至少一个从节点,因此最少需要6个redis实例。但是没有那么多的虚拟机,因此,这里通过在一台机器上不同的端口启动一个服务来模拟多个机器,效果是一样的。
我们在/usr/redis-cluster 目录下创建7001-7006 一共7个文件夹,用来存放每个服务的配置文件,将redis.conf配置文件复制到每个文件夹一份,并将如下内容进行修改,
bind 0.0.0.0 这里修改为任意机器都可以连接,具体生产环境中另作配置
port 7001 (和对应的文件夹名称一致)
dbfilename dump-7001.rdb (和对应的文件夹名称一致)
appendonly yes 将数据持久化机制改为aof
appendfilename "appendonly-7001.aof" (改为和对应的文件夹名称一致)
cluster-enabled yes 开启集群配置
cluster-config-file nodes-7006.conf (改为和对应的文件夹名称一致)
cluster-node-timeout 5000 超时时间 (可以改也可以不改)
将这些配置每个文件夹放一份
然后执行./redis-server ../usr/redis-cluster/7001-7006/redis.conf 启动6个实例
在redis 5.0版本以前,还需要安装ruby,这个不是很方便,而5.0以后,就不需要了,因此,我们下载的redis是5.0以后的
执行命令./redis-cli --cluster create 192.168.184.141:7001 192.168.184.141:7002 192.168.184.141:7003 192.168.184.141:7004 192.168.184.141:7005 192.168.184.141:7006 --cluster-replicas 1
--cluster-replicas 1 表示为每个主节点创建一个从节点
执行完毕后,会打印出一份预想的配置,如果觉得没有问题,输入yes即可完成集群的创建,如下图
最后显示all 16384 slots covered
验证集群 输入命令 ./redis-cli -h 192.168.184.141:7001 -p 7001 -c 进行连接 -c表示以集群模式连接
连接成功以后,输入cluster info 查看集群信息
查看集群节点信息 输入命令 cluster nodes
存取数据
重启集群(保留原有集群)
将集群的各个节点关闭,再启动起来即可
重启集群(删除原有集群)
相当于重新配置集群,删除原有集群产生的文件,重新配置一遍即可
启动redis集群后,设置密码
访问密码如果没有再redis.conf中设置,也可以在启动redis后,动态设置,用config set 命令来设置
集群主节点的增加
再启动一个redis服务 7007
可以看到 7007的redis服务已经启动了
集群从节点的增加
执行命令:./redis-cli --cluster add-node 192.168.184.141:7007 192.168.184.141:7001
192.168.184.141:7007 表示新节点 192.168.184.141:7001 表示集群中任意一个节点
上图显示,已经成功添加了,添加后,默认是主节点。但是此时,新添加的节点是空的,没有任何的槽
这时候需要重新分配hash槽
询问 想要移动多少个hash 槽 我们输入1000
询问由哪个节点来接收100个槽,输入我们刚才添加的新节点
这里有两种方式可以选,选择all ,系统会自动进行平均分配
输入done 表示输入完成
分配完毕以后,查看集群信息
发现集群已经是4个master了。
这个新节点已经分配了hash 槽了
集群中从节点的添加
在启动一个redis服务
./redis-cli --cluster add-node --slave 192.168.184.141:7008 192.168.184.7001
执行上面的命令,会给集群中添加一个从节点,但是没有指定具体的主节点,会默认分配从节点最少的,如果所有主节点的从节点个数都一样,则随机
添加完节点后,默认是主节点,登陆节点,执行命令cluster replicate cd850fb39e055370e2e1a302daa6c611bf7d0a83
cd850fb39e055370e2e1a302daa6c611bf7d0a83 表示主节点id
这样,此节点就成为了指定主节点的从节点
集群从节点的删除
执行命令 ./redis-cli --cluster del-node 192.168.184.141:7001 要删除的节点id
可以看到节点已经被删除了
集群主节点的删除
主节点要想删除,得先将上面得槽全部移除,再执行上面得删除命令
可以看到,现在得集群数量已经由原来得4变为了3,192.168.184.141:7007 上得槽也已经是0
执行删除命令 ./redis-cli --cluster del-node 192.168.184.141:7001 cd850fb39e055370e2e1a302daa6c611bf7d0a83
可以看到,主节点已经被删除了
查询进程,也显示是6个了。
Tags:redis
很赞哦! ()
上一篇:redis服务信息(图文)
下一篇:java使用redis(图文)
相关文章
随机图文
-
redis发布与订阅(图文)
redis发布与订阅是一种消息通信模式,发布者发布消息,订阅者接收消息,订阅者可以订阅任意数量的频道 -
redis键(图文)
redis的key命令用于管理redis的键 -
redis HyperLogLog(图文)
redis 在2.8.9中加入了 HyperLogLog结构,HyperLogLog的优点是,在输入元素的体积或数量非常庞大时,计算基数所需的空间时固定的,并且是很小的。 -
Linux安装Redis(图文)
redis是开源的,是一个高性能的key-value型数据库 redis与其他key-value型缓存产品有以下特点: 1redis支持数据的持久化,即将内存中的数据保存到硬盘中,重启的时候可以再次加载进行使用 2redis不仅支持简单的key-value型数据,还支持list,set,hash,zset数据结构的存储 3redis支持数据备份,即master-slave模式的数据备份 4性能极高,读性能高达每秒110000次,写效率可达每秒80000次 5redis的所有操作都是原子的。