docker-compose部署redis(生产案例)

本文详细介绍了如何在Linux系统中手动创建Redis目录,配置文件,编写Docker Compose文件,并启动服务。步骤包括设置监听地址、启用守护进程、配置持久化存储和AOF,最后通过Compose实现容器化部署。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

思路:
1、创建相应目录
2、创建配置文件
3、编写compose文件
4、运行

mkdir -p /opt/redis/data

vim /opt/redis/redis.conf

bind 0.0.0.0  #只监听内网IP
port 6379             #端口号
requirepass 123456

dir /data  #本地数据库存放持久化数据的目录该目录-----需要存在
dbfilename dump.rdb
save 900 1
save 300 10
save 60 10000 

appendonly yes                      #开启AOF
appendfilename appendonly.aof       #指定aof文件名称
appendfsync everysec               #指定aof操作中文件同步策略

vim /opt/redis/redis-compose.yml

version: '3'
services:
  redis:
    container_name: redis
    image: redis:6.2
    command: redis-server /usr/local/etc/redis/redis.conf
    restart: always
    volumes:
      - /opt/redis/data:/data
      - /opt/redis/redis.conf:/usr/local/etc/redis/redis.conf
    ports:
      - 6379:6379

cd /opt/redis && docker-compose -f redis-compose.yml up -d

### 使用 Docker Compose 部署 Redis 哨兵架构 在 Docker Compose 中配置 Redis 哨兵模式需要明确 Redis 主从实例和哨兵实例的协作关系。以下是部署 Redis 哨兵架构的详细方法[^1]: #### 1. 创建 `docker-compose.yml` 文件 编写一个 `docker-compose.yml` 文件,定义 Redis 主从节点以及哨兵节点的配置。 ```yaml version: '3.8' services: redis-master: image: redis:6.2-alpine container_name: redis-master ports: - "6379:6379" networks: - redis-net redis-slave-1: image: redis:6.2-alpine container_name: redis-slave-1 command: redis-server --slaveof redis-master 6379 ports: - "6380:6379" networks: - redis-net redis-slave-2: image: redis:6.2-alpine container_name: redis-slave-2 command: redis-server --slaveof redis-master 6379 ports: - "6381:6379" networks: - redis-net sentinel-1: image: redis:6.2-alpine container_name: sentinel-1 command: redis-sentinel --sentinel --daemonize no --port 26379 redis-master:6379 2@redis-master 6379 quorum 2 ports: - "26379:26379" depends_on: - redis-master - redis-slave-1 - redis-slave-2 networks: - redis-net sentinel-2: image: redis:6.2-alpine container_name: sentinel-2 command: redis-sentinel --sentinel --daemonize no --port 26380 redis-master:6379 2@redis-master 6379 quorum 2 ports: - "26380:26379" depends_on: - redis-master - redis-slave-1 - redis-slave-2 networks: - redis-net sentinel-3: image: redis:6.2-alpine container_name: sentinel-3 command: redis-sentinel --sentinel --daemonize no --port 26381 redis-master:6379 2@redis-master 6379 quorum 2 ports: - "26381:26379" depends_on: - redis-master - redis-slave-1 - redis-slave-2 networks: - redis-net networks: redis-net: driver: bridge ``` #### 2. 启动服务 使用以下命令启动所有服务: ```bash docker-compose up -d ``` 这将启动一个包含主节点、两个从节点和三个哨兵节点的 Redis 哨兵集群。 #### 3. 验证哨兵功能 可以通过连接到任意一个哨兵容器来验证其状态: ```bash docker exec -it sentinel-1 redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster ``` 如果主节点发生故障,哨兵会自动进行故障转移,并选择一个新的主节点[^3]。 --- ### 注意事项 - 确保所有 Redis 和哨兵实例位于同一个网络中(如 `redis-net`),以便它们能够相互通信。 - 哨兵的 `quorum` 参数决定了多少个哨兵节点同意后才能触发故障转移。建议将其设置为至少 2 或更高以提高可靠性。 -生产环境中,建议为每个容器分配独立的主机端口,并确保防火墙规则允许这些端口通信[^5]。 --- ### 示例代码:Spring Boot 集成 Redis 哨兵 如果需要在 Spring Boot 应用中集成 Redis 哨兵,可以参考以下代码[^4]: ```java @SpringBootApplication public class RedisDemoApplication { public static void main(String[] args) { SpringApplication.run(RedisDemoApplication.class, args); } @Bean public LettuceClientConfigurationBuilderCustomizer configurationBuilderCustomizer() { return configBuilder -> configBuilder.readFrom(ReadFrom.REPLICA_PREFERRED); } } ``` 上述代码配置了 Lettuce 客户端优先从 Redis 从节点读取数据。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值