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 槽中的键 。
热爱技术,享受生活,感谢推荐!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?