关于redis一些知识点(主从,哨兵,集群)

本文详细介绍了Redis主从配置方法,包括配置文件修改、启动步骤和客户端连接指南。进一步探讨了Redis集群原理,包括节点互联、客户端连接机制、集群环境搭建要求,以及如何通过脚本启动和关闭集群。此外,还讲解了安全防范措施,如禁用高危命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

redis主从配置
复制两个redis配置文件(启动两个redis,只需要一份redis程序,两个不同的redis配置文件即可)
mkdir redis-master-slave
cp path/to/redis/conf/redis.conf path/to/redis-master-slave master.conf
cp path/to/redis/conf/redis.conf path/to/redis-master-slave slave.conf

修改配置
## master.conf
port 6379
bind 127.0.0.1 (或自己的内网ip)

## slave.conf
port 6380
slaveof 127.0.0.1 6379
bind 127.0.0.1 (或自己的内网ip)

注意,配置文件中bind的配置
bind 绑定的是redis服务器的ip,与redis客户端没有任何关系。
https://blog.csdn.net/zhaoxichen_10/article/details/85000309

分别启动两个redis
redis-server path/to/redis-master-slave/master.conf
redis-server path/to/redis-master-slave/slave.conf

连接上master
redis-cli -h 127.0.0.1 -p 6379

连接上slave 
redis-cli -h 127.0.0.1 -p 6380



redis-sentinel哨兵
sentinel 通常翻译成哨兵,就是放哨的,这里它就是用来监控主从节点的健康情况。客户端连接redis主从的时候,先连接 sentinel,sentinel会告诉客户端主redis的地址是多少,然后客户端连接上redis并进行后续的操作。当主节点挂掉的时候,客户端就得不到连接了因而报错了,客户端重新想sentinel询问主master的地址,然后客户端得到了[新选举出来的主redis],然后又可以愉快的操作了。

mkdir redis-sentinel
cd redis-sentinel
cp redis/path/conf/redis.conf path/to/redis-sentinel/redis01.conf
cp redis/path/conf/redis.conf path/to/redis-sentinel/redis02.conf
cp redis/path/conf/redis.conf path/to/redis-sentinel/redis03.conf
touch sentinel.conf

vim redis01.conf
port 63791

vim redis02.conf
port 63792
slaveof 127.0.0.1 63791

vim redis03.conf
port 63793
slaveof 127.0.0.1 63791

vim sentinel.conf #redis安装目录下也有提供了sentinel.conf
daemonize yes
port 26379
sentinel monitor mymaster 127.0.0.1 63793 1  # 注意,mymaster 为主节点名字,可以随便取,后面程序里边连接的时候要用到,127.0.0.1 63793 为主节点的 ip,port;
											 # 后面的数字1 表示选举主节点的时候,投票数。1表示有一个sentinel同意即可升级为master

启动哨兵,使用jedis连接哨兵操作redis
(上面我们配置好了redis主从,1主2从,以及1个哨兵。下面我们分别启动redis,并启动哨兵,之后,执行info查看主从信息。)
redis-server path/to/redis-sentinel/redis01.conf
redis-server path/to/redis-sentinel/redis02.conf
redis-server path/to/redis-sentinel/redis03.conf

redis-server path/to/redis-sentinel/sentinel.conf --sentinel
https://www.php.cn/php-weizijiaocheng-406429.html


redis集群原理
所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
节点的fail是通过集群中超过半数的节点检测失效时才生效(所以至少需要3个redis对象才能组成集群)。
客户端与redis节点直连,不需要中间proxy层.客户端不需要连接集群所有节点,连接集群中任何一个可用节点即可。
redis集群是没有统一的入口的,客户端(client)连接集群的时候连接集群中的任意节点(node)即可,集群内部的节点是相互通信的(PING-PONG机制),每个节点都是一个redis实例;
redis-cluster把所有的物理节点映射到[0-16383]slot上,cluster 负责维护node<->slot<->value

集群环境搭建要求
Redis集群至少需要3个节点,这是因为其投票容错机制要求超过半数节点才认为某个节点宕机,所以2个节点无法构成集群。
同时,要保证集群的高可用,所以需要每个节点都有从节点,也就是备份节点,所以Redis集群至少需要6台服务器。
在这里用一台服务器虚拟运行6个redis实例,修改端口号为(7001-7006)。

安装redis-5.0.5.tar.gz
下载redis压缩包,然后解压压缩文件;
进入到解压缩后的redis文件目录(此时可以看到Makefile文件),编译redis源文件,执行make;
将redis启动方式改为后端启动,具体做法:把解压缩的redis文件下的redis.conf 文件复制到/usr/local/redis/bin目录下(没有bin,自行创建),
然后修改该redis.conf文件->daemonize:no 改为daemonize:yse ;绑定的ip改为 bind 0.0.0.0 ;
复制2个脚本文件;cp redis-5.0.5/src/redis-cli redis-server ../bin/

注意,redis3.0版本之前只支持单例模式,在3.0版本及以后才支持集群

集群目录 /usr/local/src/redis-cluster 
安装6台 redis实例
在/usr/local/src/redis-cluster目录下
mkdir {redis-01,redis-02,redis-03,redis-04,redis-05,redis-06}
cp -r ../redis-5.0.5/bin /usr/local/src/redis-cluster/{redis-01,redis-02,redis-03,redis-04,redis-05,redis-06}
配置redis-01,redis-02,redis-03,redis-04,redis-05,redis-06目录下的redis.conf,改端口和开启集群配置cluster-enabled yes 

脚本启动6个redis实例
./start-redis-cluster.sh
脚本内容:
#!/bin/sh

cd /usr/local/src/redis-cluster/redis-01
./redis-server redis.conf

cd /usr/local/src/redis-cluster/redis-02
./redis-server redis.conf

cd /usr/local/src/redis-cluster/redis-03
./redis-server redis.conf

cd /usr/local/src/redis-cluster/redis-04
./redis-server redis.conf

cd /usr/local/src/redis-cluster/redis-05
./redis-server redis.conf

cd /usr/local/src/redis-cluster/redis-06
./redis-server redis.conf

因为redis集群的管理文件会用到ruby脚本,所以需要安装ruby环境
安装ruby
yum -y install ruby
yum -y install rubygems

同时,需要下载redis-3.0.0.gem 到集群目录
gem install redis

创建redis集群
在redis.5.0以前,redis集群的ruby脚本工具是redis-trib.rb,现redis官方已统一为redis-cli 参数来完成。
./redis-01/redis-cli --cluster create 192.168.153.142:7001 192.168.153.142:7002 192.168.153.142:7003 192.168.153.142:7004 192.168.153.142:7005 192.168.153.142:7006 --cluster-replicas 1


客户端连接集群(连接集群节点,连接任意一个即可)
./redis-01/redis-cli -c -h 192.168.153.142 -p 7001   #其中-c表示以集群方式连接redis,-h指定ip地址,-p指定端口号


关闭集群脚本
./close-redis-cluster.sh
#!/bin/sh
cd /usr/local/src/redis-01
./redis-cli -p 7001 shutdown
cd /usr/local/src/redis-02
./redis-cli -p 7002 shutdown
cd /usr/local/src/redis-03
./redis-cli -p 7003 shutdown
cd /usr/local/src/redis-04
./redis-cli -p 7004 shutdown
cd /usr/local/src/redis-05
./redis-cli -p 7005 shutdown
cd /usr/local/src/redis-06
./redis-cli -p 7006 shutdown

关闭集群后,若重启redis-cluster
./start-redis-cluster.sh


重启若报错
https://blog.csdn.net/truelove12358/article/details/79612954

Redis的Errorlog或者启动日志(错误日志)的配置
Redis默认并没有配置ErrorLog,如果没有指定logfile(的路径),logs will be sent to /dev/null
配置
logfile “/usr/local/redis5/redis_log.log”

安全防范:
入侵特征:
Redis 可能执行过 FLUSHALL 方法,整个 Redis 数据库被清空
在 Redis 数据库中新建了一个名为 crackit(网上流传的命令指令) 的键值对,内容为一个 SSH 公钥。
在 /root/.ssh 文件夹下新建或者修改了 authorized_keys 文件,内容为 Redis 生成的 db 文件,包含上述公钥
禁止一些高危命令
修改 redis.conf 文件,添加
rename-command FLUSHALL ""
rename-command CONFIG   ""
rename-command EVAL     ""


https://blog.csdn.net/jackyechina/article/details/71267384?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.nonecase

https://blog.csdn.net/zhanghan18333611647/article/details/65632827


redis可视化工具(redis-desktop-manager)
https://www.jianshu.com/p/ccc3ebe29f7b

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值