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 源:

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

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

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

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

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

    修改 bind 和 requirepass

    bind 0.0.0.0
    requirepass 123456

    然后重启 redis:

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

    # 添加 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

    redis-cli
    127.0.0.1:6379> auth 123456
    OK

通过 snap 安装

  1. 安装 redis

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

    snap list
  3. 启动 Redis:

    sudo snap start redis
  4. 运行 redis-cli

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

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

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

    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地址,使其对外可访问。请注意,这可能会带来一些安全风险,因此请谨慎操作。

    设置保护模式

    127.0.0.1:6379> CONFIG SET protected-mode no

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

  6. 设置访问密码

    127.0.0.1:6379> config set requirepass mypass

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

  7. 升级

    sudo snap refresh redis
  8. 卸载

    sudo snap remove redis

在 MacOS 安装

  1. 安装 Redis:

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

    brew services start redis

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

  3. 查看 Redis 状态

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

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

    redis-cli ping

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

  5. 停止 Redis 服务器:

    brew services stop redis

通过源码安装

  1. 安装编译软件

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

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

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

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

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

  5. 拷贝配置文件

    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:

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

    查看进程:

    ps -ef|grep redis

    停止redis服务:

    redis-cli shutdown

通过 docker 安装

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

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

参数说明:

通过 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:

集群模式安装

通过 yum 安装

TODO

通过 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 安装

TODO

通过 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:
[译]使用 Spring Boot 构建 RESTful API:集成 DDD 和六边形架构
Argo CD安装和部署