macOS 系统安装 Redis 并启用集群模式


安装 Redis

$ brew install redis

集群模式初始化

# 创建文件夹,我放在了用户目录的 Portable 目录下
mkdir ~/Portable && cd ~/Portable
mkdir -p redis-cluster/{7000..7005}

# 复制几份配置文件供集群实例使用
for port in {7000..7005}; do
    cp /opt/homebrew/etc/redis.conf redis-cluster/$port 
done

# 为配置文件追加集群相关配置
for port in {7000..7005}; do
    cat >> redis-cluster/$port/redis.conf <<EOF 
port $port  
cluster-enabled yes
cluster-config-file nodes-$port.conf 
cluster-node-timeout 5000
appendonly yes 
EOF
done

# 启动实例
for port in {7000..7005}; do
    redis-server redis-cluster/$port/redis.conf --daemonize yes --pidfile /tmp/redis-cluster-$port.pid
done

# 初始化
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 \
127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1 < <(yes "yes")

连接 Redis 集群

redis-cli -c -p 7000
  • -c 参数开启集群模式
  • -p 参数指定连接的端口

使用 INFO CLUSTER 命令可以查看 Redis 是否是在集群模式运行

127.0.0.1:7000> info cluster
# Cluster
cluster_enabled:1

启动集群

for port in {7000..7005}; do
    redis-server redis-cluster/$port/redis.conf --daemonize yes --pidfile /tmp/redis-cluster-$port.pid
done

停止集群

for port in {7000..7005}; do
    kill `cat /tmp/redis-cluster-$port.pid` 
done

通过 kill 杀进程有些暴力,建议使用 shutdown 指令。

for port in {7000..7005}; do
    redis-cli -p $port shutdown
done

补充

使用 lsof -i:7000 可以在 macOS 下查看端口占用情况

查找 redis 进程可以使用 ps aux | grep redis


2023-08-21 更新

有时候可能需要低版本的 Redis 对旧项目/库进行测试,对 Redis 6.x 版本进行补充如下

如果是从 7.x 版本降级安装,需要线删除 rdb 文件,路径在: /opt/homebrew/var/db/redis/ 下,没有需要备份的数据删除即可

安装 6.x 版本的 Redis

$ brew install redis@6.2

其它脚本也需要简单变更,redis-cluster 改为 redis-cluster-6,其它不变

启动后,可以通过 info server 查看版本信息,已降级成功

127.0.0.1:7000> info server
# Server
redis_version:6.2.13
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:f341e7c1f9d51bff
redis_mode:cluster
os:Darwin 22.1.0 arm64
arch_bits:64
...