Redis 安装与部署指南

单机安装

通过 yum 安装

在 CentOS 7 上通过 yum 安装 Redis,可以按照以下步骤进行操作:

  1. 更新系统软件包:

    sudo yum update
  2. 安装 Redis:

    sudo yum install redis

    可以看到默认安装的 redis 版本是 3.2.12-2.el7

    如果需要安装 redis 7,这需要下载 yum 源:

    Terminal window
    sudo yum install epel-release
    sudo yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm

    然后,在指定源进行安装:

    Terminal window
    yum --enablerepo=remi install redis
  3. 启动 Redis 服务:

    sudo systemctl start redis
  4. 配置 Redis 开机自启动:

    sudo systemctl enable redis
  5. 修改配置文件 /etc/redis.conf

    修改 bind 和 requirepass

    Terminal window
    bind 0.0.0.0
    requirepass 123456

    然后重启 redis:

    Terminal window
    sudo systemctl restart redis
  6. 开启防火墙(可选)

    Terminal window
    # 添加 redis 端口
    firewall-cmd --zone=public --add-port=6379/tcp --permanent
    firewall-cmd --zone=public --add-port=6379/udp --permanent
    # 重启防火墙
    firewall-cmd --reload
  7. 运行 redis-cli

    Terminal window
    redis-cli
    127.0.0.1:6379> auth 123456
    OK

通过 snap 安装

  1. 安装 redis

    Terminal window
    sudo snap install redis
  2. 查看 snap 安装的包:

    Terminal window
    snap list
  3. 启动 Redis:

    Terminal window
    sudo snap start redis
  4. 运行 redis-cli

    Redis的snap安装没有预配置的文件(redis.conf)。因此,我们需要使用Redis的CLI进入控制台并进行配置。

    Terminal window
    redis.cli
    # 打印所有的配置
    127.0.0.1:6379> CONFIG GET *
  5. 配置外网访问

    要配置Redis以允许外部网络访问,使用以下命令:

    Terminal window
    127.0.0.1:6379> CONFIG GET bind
    127.0.0.1:6379> config set bind 0.0.0.0

    这将绑定Redis服务器到0.0.0.0 IP地址,使其对外可访问。请注意,这可能会带来一些安全风险,因此请谨慎操作。

    设置保护模式

    Terminal window
    127.0.0.1:6379> CONFIG SET protected-mode no

    该模式控制外部网是否可以连接 redis 服务,默认是 yes, 所以默认我们外网是无法访问的,如需外网连接 rendis 服务则需要将此属性改为 no。

  6. 设置访问密码

    Terminal window
    127.0.0.1:6379> config set requirepass mypass

    这将设置一个名为”mypass”的密码作为访问Redis的要求。请确保将”mypass”替换为您选择的强密码。

  7. 升级

    Terminal window
    sudo snap refresh redis
  8. 卸载

    Terminal window
    sudo snap remove redis

在 MacOS 安装

  1. 安装 Redis:

    Terminal window
    brew install redis
  2. 启动 Redis 服务器:

    Terminal window
    brew services start redis

    这将启动 Redis 服务器并使其在后台运行。

  3. 查看 Redis 状态

    Terminal window
    brew services info redis
  4. 验证 Redis 安装:

    您可以使用以下命令来验证 Redis 是否成功安装并正在运行:

    Terminal window
    redis-cli ping

    如果 Redis 正常运行,它将返回 “PONG”。

  5. 停止 Redis 服务器:

    Terminal window
    brew services stop redis

通过源码安装

  1. 安装编译软件

    Terminal window
    yum -y install gcc gcc-c++ kernel-devel
  2. 创建安装目录

    Terminal window
    mkdir -p /usr/local/redis
  3. 下载源代码并解压

    Terminal window
    wget https://download.redis.io/redis-stable.tar.gz
    tar -xzvf redis-stable.tar.gz
  4. 进入都目,编译安装

    Terminal window
    cd redis-stable
    make prefix=/usr/local/redis/ install

    make install默认安装到/usr/local/bin目录下,如果需要指定安装路径,需要添加PREFIX参数

  5. 拷贝配置文件

    Terminal window
    mkdir /usr/local/redis/conf
    cp redis.conf /usr/local/redis/conf/
  6. 修改 redis.conf 加入以下配置:

    # 允许哪些 IP 地址可以访问
    bind 0.0.0.0
    # 以守护进程的方式运行
    daemonize yes
    # 设置密码授权
    requirepass <设置密码>
  7. 启动Redis:

    Terminal window
    redis-server /usr/local/redis/conf/redis.conf

    查看进程:

    Terminal window
    ps -ef|grep redis

    停止redis服务:

    Terminal window
    redis-cli shutdown

通过 docker 安装

在Docker中运行Redis容器,并设置密码保护和持久化存储的配置

Terminal window
REDIS_PASSWORD=123456
docker run \
-d \
--restart always \
--privileged=true \
--name redis \
-v /etc/localtime://etc/localtime \
-p 6379:6379 \
redis:7 \
--requirepass $REDIS_PASSWORD \
--appendonly yes

参数说明:

  • REDIS_PASSWORD=123456:设置Redis的密码为123456。可以根据需要更改密码。
  • docker run:运行Docker容器命令。
  • -d:以后台模式运行容器。
  • --restart always:设置容器在启动时自动重启。
  • --privileged=true:授予容器特权,以便在容器内部执行特权操作。
  • --name redis:指定容器的名称为redis。
  • -v /etc/localtime://etc/localtime:将主机的时区设置映射到容器内部,以确保时间同步。
  • -p 6379:6379:将主机的6379端口映射到容器的6379端口,以便可以通过主机IP和端口访问Redis。
  • redis:7:指定要运行的Redis镜像版本为7。
  • --requirepass $REDIS_PASSWORD:设置Redis的密码为之前定义的REDIS_PASSWORD变量的值。
  • --appendonly yes:开启Redis的AOF(Append-Only File)持久化模式,将写操作追加到文件中,以保证数据持久化。

通过 docker-compose 安装

使用Docker Compose配置Redis单机容器,https://github.com/chensoul/learn-docker/blob/main/docker-compose/redis/docker-compose.redis.yml

version: '3.0'
services:
# Redis standalone
redis:
image: bitnami/redis:7.2
restart: always
environment:
# ALLOW_EMPTY_PASSWORD is recommended only for development.
ALLOW_EMPTY_PASSWORD: "yes"
ports:
- '6379:6379'
volumes:
- redis-data://bitnami/redis/data
healthcheck:
test: [ "CMD", "redis-cli","--raw", "incr","ping" ]
interval: 5s
timeout: 2s
retries: 10
volumes:
redis-data:
  • restart: always:设置容器在停止后自动重启。
  • environment:定义容器的环境变量。
    • ALLOW_EMPTY_PASSWORD: "yes":允许使用空密码(仅在开发环境中建议使用)。
  • ports:指定容器端口与主机端口的映射关系。
    • '6379:6379':将主机的6379端口映射到容器的6379端口,以便可以通过主机IP和端口访问Redis。
  • volumes:定义容器的数据卷。
    • redis-data://bitnami/redis/data:将Redis容器的数据存储在名为redis-data的卷中。
  • healthcheck:定义容器的健康检查。
    • test: [ "CMD", "redis-cli","--raw", "incr","ping" ]:使用Redis的健康检查命令来测试容器的健康状态。
    • interval: 5s:每5秒运行一次健康检查。
    • timeout: 2s:每次健康检查的超时时间为2秒。
    • retries: 10:最多重试10次健康检查。

集群模式安装

通过 yum 安装

这一节暂未整理,当前更推荐直接参考下方的 docker-compose 方案快速搭建 Redis Cluster。

通过 docker-compose 安装

https://github.com/chensoul/learn-docker/blob/main/docker-compose/redis/docker-compose.redis-cluster.yml

version: '3.0'
services:
# Redis cluster
redis-node-0:
image: bitnami/redis-cluster:7.2
volumes:
- redis-cluster-data-0://bitnami/redis/data
environment:
- REDIS_PASSWORD=redis
- REDISCLI_AUTH=redis
- REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5
redis-node-1:
image: bitnami/redis-cluster:7.2
volumes:
- redis-cluster-data-1://bitnami/redis/data
depends_on:
- redis-node-0
environment:
- REDIS_PASSWORD=redis
- REDISCLI_AUTH=redis
- REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5
redis-node-2:
image: bitnami/redis-cluster:7.2
volumes:
- redis-cluster-data-2://bitnami/redis/data
depends_on:
- redis-node-1
environment:
- REDIS_PASSWORD=redis
- REDISCLI_AUTH=redis
- REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5
redis-node-3:
image: bitnami/redis-cluster:7.2
volumes:
- redis-cluster-data-3://bitnami/redis/data
depends_on:
- redis-node-2
environment:
- REDIS_PASSWORD=redis
- REDISCLI_AUTH=redis
- REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5
redis-node-4:
image: bitnami/redis-cluster:7.2
volumes:
- redis-cluster-data-4://bitnami/redis/data
depends_on:
- redis-node-3
environment:
- REDIS_PASSWORD=redis
- REDISCLI_AUTH=redis
- REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5
redis-node-5:
image: bitnami/redis-cluster:7.2
volumes:
- redis-cluster-data-5://bitnami/redis/data
depends_on:
- redis-node-0
- redis-node-1
- redis-node-2
- redis-node-3
- redis-node-4
environment:
- REDIS_PASSWORD=redis
- REDISCLI_AUTH=redis
- REDIS_NODES=redis-node-0 redis-node-1 redis-node-2 redis-node-3 redis-node-4 redis-node-5
- REDIS_CLUSTER_REPLICAS=1
- REDIS_CLUSTER_CREATOR=yes
volumes:
redis-cluster-data-0:
redis-cluster-data-1:
redis-cluster-data-2:
redis-cluster-data-3:
redis-cluster-data-4:
redis-cluster-data-5:

哨兵模式安装

通过 yum 安装

这一节暂未整理,当前更推荐直接参考下方的 docker-compose 方案快速搭建 Redis Sentinel。

通过 docker-compose 安装

https://github.com/chensoul/learn-docker/blob/main/docker-compose/redis/docker-compose.redis-sentinel.yml

version: '3.0'
services:
# Redis sentinel
redis-master:
image: bitnami/redis:7.2
volumes:
- redis-sentinel-data-master://bitnami/redis/data
environment:
- REDIS_REPLICATION_MODE=master
- REDIS_PASSWORD=123456
redis-slave:
image: bitnami/redis:7.2
volumes:
- redis-sentinel-data-slave://bitnami/redis/data
environment:
- REDIS_REPLICATION_MODE=slave
- REDIS_MASTER_HOST=redis-master
- REDIS_MASTER_PASSWORD=123456
- REDIS_PASSWORD=123456
depends_on:
- redis-master
redis-sentinel:
image: bitnami/redis:7.2
volumes:
- redis-sentinel-data-sentinel://bitnami/redis/data
environment:
- REDIS_MASTER_HOST=redis-master
- REDIS_MASTER_SET=mymaster
- REDIS_SENTINEL_PASSWORD=123456
- REDIS_MASTER_PASSWORD=123456
depends_on:
- redis-master
- redis-slave
volumes:
redis-sentinel-data-master:
redis-sentinel-data-slave:
redis-sentinel-data-sentinel:

订阅文章

订阅更新,不错过后续文章

直接通过 RSS 和 Telegram 订阅本站更新。

分享文章

如果这篇有帮助,可以顺手转发

直接分享给同事、朋友,或者发到你的社交平台。