Redis的5种使用方式,各自优缺点分析:https://www.jianshu.com/p/220b8d2c41c3
使用单机环境,不同端口,搭建三主三从的集群。本文中使用的ip为同一ip,搭建的集群是一个伪集群。搭建真正集群时,调整redis-cli --cluster create中的ip即可。
本文的软硬件环境:
ip:172.16.101.35
os:CentOS Linux release 7.7.1908 (Core)
redis:6.0.8
- 下载redis:http://download.redis.io/releases,本文中使用的为redis-6.0.8.tar.gz
- 编译安装
2.1 解压redis-6.0.8.tar.gz
tar xzf redis-6.0.8.tar.gz
2.1 进入redis-6.0.8目录,执行make,进行编译
cd redis-6.0.8
make
若编译报错,可能是缺少编译环境gcc和tcl
1)安装gcc,先清理掉上一步编译产生的文件,执行命令
make distclean
安装gcc,执行命令
yum install gcc -y
这里遇到一个问题:在安装6.0.1版本make时会遇到这样一个错误,server.c:xxxx:xx: error: ‘xxxxxxxx’ has no member named ‘xxxxx
原因:gcc编译工具版本的问题,centos7默认安装的版本是4.8.5,但是要求对应版本要在5.3以上,查看gcc版本命令
gcc -v
解决方法:升级到5.3以上版本,依次执行命令
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile --使永久生效
2)安装tcl,执行命令
yum install tcl -y
重新编译make
2.2 安装
make install PREFIX=/usr/local/redis
这时就会在/usr/local目录下生成一个redis目录,后面操作redis均使用此目录下文件,解压编译的目录作为源目录。
-
集群搭建
-
首先创建集群文件夹,存放不同配置文件
cd /usr/local/redis
mkdir redis-cluster
cd redis-cluster
mkdir 7291 7292 7293 7294 7295 7296
- 复制配置文件至 7291 目录
cp /usr/local/redis/bin/redis.conf /usr/local/redis/redis-cluster/7291
- 修改7291下配置文件内容,并将 bind 参数注释,否则外部客户端无法连接
port 7291
daemonize yes
protected-mode no
dir /usr/local/redis/redis-cluster/7291/
cluster-enabled yes
cluster-config-file nodes-7291.conf
cluster-node-timeout 5000
appendonly yes
pidfile /var/run/redis_7291.pid
- 把7291下的redis.conf复制到其他5个目录
cd /usr/local/redis/redis-cluster/7291
cp redis.conf ../7292
cp redis.conf ../7293
cp redis.conf ../7294
cp redis.conf ../7295
cp redis.conf ../7296
- 批量替换内容
cd /usr/local/redis/redis-cluster
sed -i 's/7291/7292/g' 7292/redis.conf
sed -i 's/7291/7293/g' 7293/redis.conf
sed -i 's/7291/7294/g' 7294/redis.conf
sed -i 's/7291/7295/g' 7295/redis.conf
sed -i 's/7291/7296/g' 7296/redis.conf
- 启动所有节点
cd /usr/local/redis/bin
./redis-server ../redis-cluster/7291/redis.conf
./redis-server ../redis-cluster/7292/redis.conf
./redis-server ../redis-cluster/7293/redis.conf
./redis-server ../redis-cluster/7294/redis.conf
./redis-server ../redis-cluster/7295/redis.conf
./redis-server ../redis-cluster/7296/redis.conf
- 检查进程
ps -ef|grep redis
root 10776 1 0 06:32 ? 00:00:21 ./redis-server *:7291 [cluster]
root 10877 1 0 06:34 ? 00:00:23 ./redis-server *:7292 [cluster]
root 10923 1 0 06:35 ? 00:00:22 ./redis-server *:7293 [cluster]
root 10965 1 0 06:35 ? 00:00:22 ./redis-server *:7294 [cluster]
root 11013 1 0 06:36 ? 00:00:23 ./redis-server *:7295 [cluster]
root 11071 1 0 06:37 ? 00:00:22 ./redis-server *:7296 [cluster]
- 创建集群,注意! 使用绝对ip,不要使用127.0.0.1
./redis-cli --cluster create 172.16.101.35:7291 172.16.101.35:7292 172.16.101.35:7293 172.16.101.35:7294 172.16.101.35:7295 172.16.101.35:7296 --cluster-replicas 1
参数说明: --cluster-replicas 1:表示一个主节点有一个从节点,集群需要6个节点,结果为三主三从;如果为2,则表示一主两从,同时需要9个节点
- 测试
./usr/local/redis/bin/redis-cli -p 7291 连接redis后,可使用如下命令管理集群
1、集群命令
cluster info :打印集群的信息
cluster nodes :列出集群当前已知的所有节点(node),以及这些节点的相关信息。
cluster meet :将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
cluster forget <node_id> :从集群中移除 node_id 指定的节点(保证空槽道)。
cluster replicate <node_id> :将当前节点设置为 node_id 指定的节点的从节点。
cluster saveconfig :将节点的配置文件保存到硬盘里面。
2、槽slot命令
cluster addslots [slot …] :将一个或多个槽(slot)指派(assign)给当前节点。
cluster delslots [slot …] :移除一个或多个槽对当前节点的指派。
cluster flushslots :移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
cluster setslot node <node_id> :将槽 slot 指派给 node_id 指定的节点,如果槽已经指派给另一个节点,那么先让另一个节点删除该槽>,然后再进行指派。
cluster setslot migrating <node_id> :将本节点的槽 slot 迁移到 node_id 指定的节点中。
cluster setslot importing <node_id> :从 node_id 指定的节点中导入槽 slot 到本节点。
cluster setslot stable :取消对槽 slot 的导入(import)或者迁移(migrate)。
3、键命令
cluster keyslot :计算键 key 应该被放置在哪个槽上。
cluster countkeysinslot :返回槽 slot 目前包含的键值对数量。
cluster getkeysinslot :返回 count 个 slot 槽中的键
网友评论