Адрес фактического центра электронной коммерции SpringBoot (30k+star):GitHub.com/macro-positive/…
Резюме
Чтобы увеличить емкость хранилища и скорость отклика Redis, иногда нам нужно построить кластер Redis. В этой статье в основном описываются шаги по созданию среды кластера Redis, а также способы интеграции и использования кластера Redis в SpringBoot.
Создание кластера Redis
Здесь мы используем самый удобный способ сборки, используя Docker Compose для сборки, друзья, которые не знают о Docker Compose, могут обратиться к следующему«Развертывание приложений Sprilboot с помощью Docker Compose».我们将搭建一个6节点的Redis集群,包括3个主节点和3个从节点。
-
Перед созданием кластера Redis нам нужно изменить файл конфигурации Redis.
redis.conf
, адрес загрузки файла:GitHub.com/Антиэнтузиазм/Горячие… -
Свойства, которые необходимо изменить, перечислены ниже, в основном для изменения некоторых конфигураций кластера и рабочих портов, а номера портов необходимо изменить на 6391~6396 по мере необходимости:
# 开启集群功能
cluster-enabled yes
# 设置运行端口
port 6391
# 设置节点超时时间,单位毫秒
cluster-node-timeout 15000
# 集群内部配置文件
cluster-config-file "nodes-6391.conf"
- Затем нам нужно написать файл docker-compose.yml для размещения контейнеров Redis 6. Конкретные свойства см. в комментариях ниже;
version: "3"
services:
redis-master1:
image: redis:5.0 # 基础镜像
container_name: redis-master1 # 容器名称
working_dir: /config # 切换工作目录
environment: # 环境变量
- PORT=6391 # 会使用config/nodes-${PORT}.conf这个配置文件
ports: # 映射端口,对外提供服务
- 6391:6391 # redis的服务端口
- 16391:16391 # redis集群监控端口
stdin_open: true # 标准输入打开
tty: true # 后台运行不退出
network_mode: host # 使用host模式
privileged: true # 拥有容器内命令执行的权限
volumes:
- /mydata/redis-cluster/config:/config #配置文件目录映射到宿主机
entrypoint: # 设置服务默认的启动程序
- /bin/bash
- redis.sh
redis-master2:
image: redis:5.0
working_dir: /config
container_name: redis-master2
environment:
- PORT=6392
ports:
- 6392:6392
- 16392:16392
stdin_open: true
network_mode: host
tty: true
privileged: true
volumes:
- /mydata/redis-cluster/config:/config
entrypoint:
- /bin/bash
- redis.sh
redis-master3:
image: redis:5.0
container_name: redis-master3
working_dir: /config
environment:
- PORT=6393
ports:
- 6393:6393
- 16393:16393
stdin_open: true
network_mode: host
tty: true
privileged: true
volumes:
- /mydata/redis-cluster/config:/config
entrypoint:
- /bin/bash
- redis.sh
redis-slave1:
image: redis:5.0
container_name: redis-slave1
working_dir: /config
environment:
- PORT=6394
ports:
- 6394:6394
- 16394:16394
stdin_open: true
network_mode: host
tty: true
privileged: true
volumes:
- /mydata/redis-cluster/config:/config
entrypoint:
- /bin/bash
- redis.sh
redis-slave2:
image: redis:5.0
working_dir: /config
container_name: redis-slave2
environment:
- PORT=6395
ports:
- 6395:6395
- 16395:16395
stdin_open: true
network_mode: host
tty: true
privileged: true
volumes:
- /mydata/redis-cluster/config:/config
entrypoint:
- /bin/bash
- redis.sh
redis-slave3:
image: redis:5.0
container_name: redis-slave3
working_dir: /config
environment:
- PORT=6396
ports:
- 6396:6396
- 16396:16396
stdin_open: true
network_mode: host
tty: true
privileged: true
volumes:
- /mydata/redis-cluster/config:/config
entrypoint:
- /bin/bash
- redis.sh
-
Из файла docker-compose.yml видно, что наши контейнеры Redis работают на 6 портах 6391~6396 соответственно. положить в контейнер
/config
Каталог конфигурации сопоставлен с хостом/mydata/redis-cluster/config
справочник, а такжеredis.sh
Сценарий служит сценарием запуска для контейнера; -
redis.sh
Роль скрипта основана на переменной среды окруженияPORT
свойство для запуска контейнера Redis с указанным файлом конфигурации;
redis-server /config/nodes-${PORT}.conf
- Далее нам нужно поместить файл конфигурации Redis и
redis.sh
Залил на линукс сервер/mydata/redis-cluster/config
Под содержанием;
- Затем загрузите наш файл docker-compose.yml на сервер Linux и используйте команду docker-compose для запуска всех контейнеров;
docker-compose up -d
- Следующая информация будет выводиться во время запуска;
- На этом этапе войдите в один из контейнеров Redis и инициализируйте кластер Redis;
# 进入Redis容器
docker exec -it redis-master1 /bin/bash
# 初始化Redis集群命令
redis-cli --cluster create \
192.168.6.139:6391 192.168.6.139:6392 192.168.6.139:6393 \
192.168.6.139:6394 192.168.6.139:6395 192.168.6.139:6396 \
--cluster-replicas 1
- В процессе создания кластера вам будет предложено подтвердить конфигурацию, введите
yes
Просто подтвердите;
- После успешного создания кластера Redis будет выведена следующая информация;
- После успешного создания мы можем использовать
redis-cli
команда для подключения к одному из сервисов Redis;
# 单机模式启动
redis-cli -h 127.0.0.1 -p 6391
# 集群模式启动
redis-cli -c -h 127.0.0.1 -p 6391
- проходить после
cluster nodes
Команда может просмотреть информацию об узле и обнаружить, что она соответствует исходному ожиданию 3 ведущих и 3 ведомых устройств.
Использование кластера Redis в SpringBoot
мы вЛучшие практики Spring Data Redis! 》Я говорил о том, как использовать Redis в SpringBoot, используя сервис Redis с одним узлом, на этот раз мы поговорим о том, как использовать кластерный сервис Redis.
- Переименовали, модифицировали файл конфигурации Application.yml на основе исходного кода, добавили конфигурацию кластера Redis;
spring:
redis:
# host: 192.168.6.139 # Redis服务器地址
# database: 0 # Redis数据库索引(默认为0)
# port: 6379 # Redis服务器连接端口
password: # Redis服务器连接密码(默认为空)
timeout: 3000ms # 连接超时时间
lettuce:
pool:
max-active: 8 # 连接池最大连接数
max-idle: 8 # 连接池最大空闲连接数
min-idle: 0 # 连接池最小空闲连接数
max-wait: -1ms # 连接池最大阻塞等待时间,负值表示没有限制
cluster:
nodes:
- 192.168.6.139:6391
- 192.168.6.139:6392
- 192.168.6.139:6393
- 192.168.6.139:6394
- 192.168.6.139:6395
- 192.168.6.139:6396
-
На этом этапе мы снова вызываем интерфейс для получения информации о бренде, и информация о бренде будет кэшироваться в кластере Redis;
-
Из-за контейнера Redis
redis-master1
иredis-slave2
Они хозяева и рабы друг друга, поэтому внутри кэшируются одни и те же детали бренда.
Адрес файла конфигурации
Адрес исходного кода проекта
публика
проект торгового центраПолный набор учебных пособий сериализуется,Обратите внимание на публичный аккаунтПолучите это прямо сейчас.