redis6

Redis6安装

下载

wget https://download.redis.io/releases/redis-6.2.6.tar.gz

创建redis安装目录

tar xf redis-6.2.6.tar.gz
cd redis-6.2.6
make install PREFIX=/TRS/redis-6.2.6
cp redis.conf   /TRS/redis-6.2.6

更改redis配置

#bind 0.0.0.0 
#关闭protected-mode模式,此时外部网络可以直接访问 
#开启protected-mode保护模式,需配置bind ip或者设置访问密码
protected-mode no
port 6379 #端口
logfile  /TRS/redis-6.2.6/redis.log
pidfile /TRS/redis-6.2.6/redis_6379.pid
#timeout 客户端闲置N秒后关闭连接
timeout 300 
#Redis默认关闭后台进程模式
daemonize yes
#开启此设置主要是为了在redis崩溃是最大限度的减少数据丢 
# AOF默认关闭,需要在配置文件中手动开启。 
# 记录所有的写操作命令,在服务启动的时候使用这些命令就可以还原数据库。 
# Append only file,采用追加的方式保存,默认文件appendonly.aof。 
appendonly yes
#设置密码 
requirepass 123456

启动停止

./redis-server ./redis.conf 
停止
./redis-cli shutdown

创建启动文件

vim /etc/systemd/system/redis.service
[Unit]
Description=redis-server
After=network.target

[Service]
Type=forking
ExecStart=/TRS/redis1/bin/redis-server /TRS/redis1/redis.conf
PrivateTmp=true

[Install]
WantedBy=multi-user.target
注意:ExecStart配置成自己的路径 

配置描述: 

  Description:描述服务 
  After:描述服务类别 
  [Service]服务运行参数的设置 
  Type=forking是后台运行的形式 
  ExecStart为服务的具体运行命令 
  ExecReload为重启命令 
  ExecStop为停止命令 
  PrivateTmp=True表示给服务分配独立的临时空间 
  注意:[Service]的启动、重启、停止命令全部要求使用绝对路径 
  [Install]运行级别下服务安装的相关设置,可设置为多用户,即系统运行级别为3

重载系统服务:systemctl daemon-reload

测试并加入开机自启 

  先关闭redis-server 
  systemctl stop redis.service

  开启redis-server 
  systemctl start redis.service #如果服务是开启状态,使用此命令会启动失败。

开启成功,将服务加入开机自启 
  systemctl enable redis.service #注意后面不能跟空格 

主从配置

只需要在从库加上

replicaof 192.168.208.70 6379   #主库地址
masterauth   zVxZJX3QXrHtRKcU   #主库密码

配置哨兵自动切换主从

port 26379

#2代表判断主节点失败至少需要2个Sentinel节点节点同意
#mymaster是主节点的别名
sentinel monitor s24ms 127.0.0.1  6380  2

#每个Sentinel节点都要定期PING命令来判断Redis数据节点和其余Sentinel节点是否可达,如果超过30000毫秒30s且没有回复,则判定不可达
sentinel down-after-milliseconds s24ms 30000

#当Sentinel节点集合对主节点故障判定达成一致时,Sentinel领导者节点会做故障转移操作,选出新的主节点,原来的从节点会向新的主节点发起复制操作,限制每次向新的主节点发起复制操作的从节点个数为1
sentinel parallel-syncs s24ms 1

#故障转移超时时间为180000毫秒
sentinel failover-timeout s24ms 180000
#后台运行哨兵 
daemonize yes 

启动

redis-server  sentinel.conf    #三台都启动

测试主节点创建

127.0.0.1:6379> set k1  v1
OK

从节点查看

127.0.0.1:6379> get k1
"v1"

在主从上分别执行查看主从状态

127.0.0.1:6379> info  Replication
# Replication
role:master
connected_slaves2

杀掉主节点查看从节点是否会升级为主

127.0.0.1:6379> info  Replication
role:master
connected_slaves1

集群配置

按照配置文件创建6个节点

#bind 0.0.0.0 
#关闭protected-mode模式,此时外部网络可以直接访问 
#开启protected-mode保护模式,需配置bind ip或者设置访问密码
protected-mode no
port 6379 #端口
logfile  /TRS/redis-6.2.6/redis.log
pidfile /TRS/redis-6.2.6/redis_6379.pid
#timeout 客户端闲置N秒后关闭连接
timeout 300 
#Redis默认关闭后台进程模式
daemonize yes
#开启此设置主要是为了在redis崩溃是最大限度的减少数据丢 
# AOF默认关闭,需要在配置文件中手动开启。 
# 记录所有的写操作命令,在服务启动的时候使用这些命令就可以还原数据库。 
# Append only file,采用追加的方式保存,默认文件appendonly.aof。 
appendonly yes
#设置密码 
requirepass 123456
masterauth 123456
# 集群
cluster-enabled yes
# 生成的node文件,不过不指定名称则直接为nodes.conf。在同一台服务器上启动第二个实列的时候就会报错。因为nodes.conf文件发生冲突
cluster-config-file nodes33331.conf

创建集群

./redis-cli -a 设置的密码 --cluster create 10.159.61.14:6386 
10.159.61.15:6387 
10.159.61.16:6388 
10.159.61.16:6386 
10.159.61.15:6387 
10.159.61.14:6388 --cluster-replicas 1

--cluster-replicas 表示主备的比例关系 1 表示一个主节点对应一个备节点
前三个 ip:port 默认表示主节点,后面的依次为前三个主节点的备份节点

备节点不可以在同一台服务器上(如果主备节点在同一台服务器上则备节点也没有太大的意义了)。所以要错开对应。
如:在主服务器挂了的情况下 这时备节点充当主节点继续工作。可以使redis集群正常运行。

常用运维命令

#添加新主节点 
redis-cli --cluster add-node new_host:new_port existing_host:existing_port --cluster-master-id node_id

#添加新主节点示例
redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7003 --cluster-master-id bbe8b7035bfd31c47bec7d612acc112cd2869368 
# 例子说明 
#new_host:new_port为要新添加的主节点IP和端口,此处是127.0.0.1:7007 
#existing_host:existing_port表示的是已存在的最后一个主节点的IP和端口,这个可以从上述的节点信息中查看到,根据slots槽数,7003端口对应的节点槽数是10923-16383,16383表示的是最后的槽数 #--cluster-master-id表示的是最后一个主节点的节点id,表示的是新添加的主节点要在这个节点后面 



#hash槽重新分配 
#添加完新节点后,需要对新添加的主节点进行hash槽重新分配,这样该主节点才能存储数据,redis共有16384个槽。
redis-cli --cluster reshard host:port --cluster-from node_id --cluster-to node_id --cluster-slots --cluster-yes 
# 例子 redis-cli --cluster reshard 127.0.0.1:7007 --cluster-from 4dad696ede24995a57c5fd790faa95c72c187a22 --cluster-to 7020c8df9423686727783c60bd2f0e367634ba84 --cluster-slots 500 
# 例子说明 #host:port表示的是新添加的那个主节点IP和端口,此处表示的是127.0.0.1:7007 #--cluster-from node_id表示的是集群第一个主节点的节点id,这个可以现有集群的slots槽数分配看出,此处表示的是7001端口对应的节点 #--cluster-to node_id表示的是集群最后一个主节点的节点id,也就是新添加的那个主节点id,此处表示的是7007端口对应的节点 
#--cluster-slots 500表示的是给新主节点分配多少,此处500表示是分配从0-499个slots槽数,若不加上这个会让手动输入 #
--cluster-yes表示的是自动应答为yes,若不加上这个会让手动输入yes,表示同意此次分配 


 

#添加新从节点 
redis-cli --cluster add-node new_host:new_port existing_host:existing_port --cluster-slave --cluster-master-id node_id 
# 例子 redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7008 --cluster-slave --cluster-master-id 7020c8df9423686727783c60bd2f0e367634ba84 
# 例子说明 
#new_host:new_port表示的是要添加的那个从节点的IP和端口,此处表示的是127.0.0.1:7008 #existing_host:existing_port表示的是要给哪个主节点添加从节点,此处表示的是127.0.0.1:7007 #--cluster-slave表示的是要添加从节点,否则则是添加主节点了 
#--cluster-master-id node_id表示要给哪个主节点添加从节点的该主节点节点id 



#删除节点 
redis-cli --cluster del-node host:port node_id 
# 例子 redis-cli --cluster del-node 127.0.0.1:7008 415db07121ba946b202bca98e15cbdffc60bc18a 
# 例子说明 #host:port表示的是要删除的那个节点的IP和端口,此处是127.0.0.1:7008 
#node_id表示的是删除的那个节点的节点id 


#查看集群节点信息 
cluster nodes 

#查看集群状态信息 
cluster info

节点
cluster meet <ip> <port> :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id> :从集群中移除 node_id 指定的节点。
cluster replicate <master_node_id> :将当前从节点设置为 node_id 指定的master节点的slave节点。只能针对slave节点操作。
cluster saveconfig :将节点的配置文件保存到硬盘里面。


槽(slot)
cluster addslots <slot> [slot ...] :将一个或多个槽( slot)指派( assign)给当前节点。
cluster delslots <slot> [slot ...] :移除一个或多个槽对当前节点的指派。
cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
cluster setslot <slot> node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给
另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
cluster setslot <slot> migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。
cluster setslot <slot> importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。
cluster setslot <slot> stable :取消对槽 slot 的导入( import)或者迁移( migrate)。
键
cluster keyslot <key> :计算键 key 应该被放置在哪个槽上。
cluster countkeysinslot <slot> :返回槽 slot 目前包含的键值对数量。
cluster getkeysinslot <slot> <count> :返回 count 个 slot 槽中的键 。

posted @   追梦nan  阅读(64)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
Redis6安装主从配置集群配置
点击右上角即可分享
微信分享提示