文章目录
【README】
1)本文介绍了redis单例,redis集群3种模式安装方法(主从模式, 哨兵模式, CLUSTER模式); 其中CLUSTER是redis集群的最佳模式 ;
2)对于redis集群的cluster模式,演示了新增与删除主从节点,槽位分配操作;
【1】安装单机
【1.1】安装环境
[root@centos211 redis-7.0.15]# cat /etc/redhat-release
CentOS Linux release 8.3.2011
【1.2】安装步骤
1)下载redis安装包源码
https://redis.io/downloads/
或者 https://download.redis.io/releases/redis-7.0.15.tar.gz?_gl=18hf3xj_gcl_au*MTE4NTMwMTg4Ny4xNzMyOTM4MDk1
2)拷贝到centos8 root家目录下的software文件下:
[root@centos211 software]# ll
总用量 2932
drwxrwxr-x. 8 root root 4096 1月 9 2024 redis-7.0.15
-rw-r--r--. 1 root root 2994329 11月 30 11:43 redis-7.0.15.tar.gz
[root@centos211 software]#
[root@centos211 software]# pwd
/root/software
[root@centos211 software]#
执行解压命令:
tar -xvf redis-7.0.15.tar.gz 得到 redis-7.0.15
3)在redis目录(/root/software/redis-7.0.15) 执行make命令,编译redis源码
sudo yum install make #若没有安装make命令(编译工具)
make
【make命令补充】make命令理解为是编译工具
Linux 中的 make 命令可自动执行从源代码创建和编译应用程序的过程。在编译应用程序时,该实用程序会读取包含如何构建应用程序的说明的 makefile,然后执行必要的命令以完成构建过程。
4)使用make编译报cc:命令未找到
原因:没有gcc编译器 ;
安装gcc编译器,如下:
sudo yum groupinstall 'Development Tools' #安装开发工具,包括安装gcc编译器
5)查看gcc编译器版本
rpm -q gcc #查看gcc编译器安装包
gcc --verson #查看安装的gcc编译器版本
gcc -v
g++ -v
6)继续执行make命令编译redis源码
报错:zmalloc.h:50:10: fatal error: jemalloc/jemalloc.h: No such file or directory
原因:我们在开始执行make 时遇到了错误(大部分是由于gcc未安装),然后我们安装好了gcc 后,我们再执行make ,这时就出现了jemalloc/jemalloc.h: No such file or directory。 这是因为上次的编译失败,有残留的文件,我们需要清理下,然后重新编译就可以了。
解决方法:在redis家目录【/root/software/redis-7.0.15】重新执行命令:
make distclean && make
7)在redis家目录执行 make test 验证redis源码编译成功

8)在redis家目录执行 make install 安装redis服务;
[root@centos211 redis]# make install
cd src && make install
make[1]: Entering directory '/root/software/redis-7.0.15/src'
Hint: It's a good idea to run 'make test' ;)
INSTALL redis-server
INSTALL redis-benchmark
INSTALL redis-cli
make[1]: Leaving directory '/root/software/redis-7.0.15/src'
9)在redis家目录创建 conf 与 data文件夹
mkdir conf
mkdir data
10)使用 ln -s 创建符号链接(软链接);(使用/redis 可以访问/root/software/redis-7.0.15)
ln -s /root/software/redis-7.0.15 /redis
11)新增redis启动配置文件(参考redis家目录下的redis.conf文件)
[root@centos211 conf]# vim redis-6379.conf
port 6379
dir /redis/data
dbfilename "dump-6379.rdb"
12)启动redis服务器
[root@centos211 conf]# redis-server redis-6379.conf

13)客户端连接redis服务器(redis-cli -p 6379)
[root@centos211 redis]# redis-cli -p 6379
127.0.0.1:6379>
127.0.0.1:6379> set name 123
OK
127.0.0.1:6379> get name
"123"
127.0.0.1:6379>
【2】redis集群主从模式配置
【2.1】集群架构
主节点:127.0.0.1 6401
从节点:127.0.0.1 6402
【2.2】redis集群主从模式搭建步骤
1)创建 redis-6401.conf文件
[root@centos211 conf]# cp redis-6379.conf redis-6401.conf
# redis-6401.conf 内容
port 6401
dir /redis/data
dbfilename "dump-6401.rdb"
[root@centos211 conf]# pwd
/redis/conf
2)创建redis-6402.conf文件(从redis-6401.conf复制并用6402替换6401,得到redis-6402.conf)
[root@centos211 conf]# sed "s/6401/6402/g" redis-6401.conf > redis-6402.conf
# redis-6402.conf 内容
port 6402
dir /redis/data
dbfilename "dump-6402.rdb"
slaveof 127.0.0.1 6401 #声明6402是6401的从节点,6401是主节点
3)启动主节点
[root@centos211 conf]# redis-server redis-6401.conf
4)启动从节点
[root@centos211 conf]# redis-server redis-6402.conf
44963:S 01 Dec 2024 02:33:27.592 * Ready to accept connections
44963:S 01 Dec 2024 02:33:27.597 * Connecting to MASTER 127.0.0.1:6401 # 连接到主节点
44963:S 01 Dec 2024 02:33:27.597 * MASTER <-> REPLICA sync started

5)从节点启动后,主节点日志如下:
44956:M 01 Dec 2024 02:33:03.518 * Ready to accept connections
44956:M 01 Dec 2024 02:33:27.599 * Replica 127.0.0.1:6402 asks for synchronization
# 接收到从节点6402的resync请求
44956:M 01 Dec 2024 02:33:27.599 * Full resync requested by replica 127.0.0.1:6402

6)客户端1连接主节点6401,设置key=name,value=1234
[root@centos211 ~]# redis-cli -p 6401
127.0.0.1:6401> set name 1234
OK
127.0.0.1:6401>
7)客户端2连接从节点6402,获取key=name的value
[root@centos211 ~]# redis-cli -p 6402
127.0.0.1:6402> get name
"1234"
【2.3】redis集群主从模式的问题(单点故障问题)
1)问题: 当主节点宕机,则整个集群无法提供写服务直到从节点切换为主节点,因为从节点是只读节点,只能提供读服务;(而主节点宕机后,主从模式不具备自动恢复能力,即从节点自动切换为主节点,只能人工干预 )

最低0.47元/天 解锁文章
1232

被折叠的 条评论
为什么被折叠?



