Redis安装和部署
单机安装
通过 yum 安装
在 CentOS 7 上通过 yum 安装 Redis,可以按照以下步骤进行操作:
更新系统软件包:
sudo yum update
安装 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
启动 Redis 服务:
sudo systemctl start redis
配置 Redis 开机自启动:
sudo systemctl enable redis
修改配置文件 /etc/redis.conf
修改 bind 和 requirepass
bind 0.0.0.0 requirepass 123456
然后重启 redis:
sudo systemctl restart redis
开启防火墙(可选)
# 添加 redis 端口 firewall-cmd --zone=public --add-port=6379/tcp --permanent firewall-cmd --zone=public --add-port=6379/udp --permanent # 重启防火墙 firewall-cmd --reload
运行 redis-cli
redis-cli 127.0.0.1:6379> auth 123456 OK
通过 snap 安装
安装 redis
sudo snap install redis
查看 snap 安装的包:
snap list
启动 Redis:
sudo snap start redis
运行 redis-cli
Redis的snap安装没有预配置的文件(
redis.conf
)。因此,我们需要使用Redis的CLI进入控制台并进行配置。redis.cli # 打印所有的配置 127.0.0.1:6379> CONFIG GET *
配置外网访问
要配置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。
设置访问密码
127.0.0.1:6379> config set requirepass mypass
这将设置一个名为"mypass"的密码作为访问Redis的要求。请确保将"mypass"替换为您选择的强密码。
升级
sudo snap refresh redis
卸载
sudo snap remove redis
在 MacOS 安装
安装 Redis:
brew install redis
启动 Redis 服务器:
brew services start redis
这将启动 Redis 服务器并使其在后台运行。
查看 Redis 状态
brew services info redis
验证 Redis 安装:
您可以使用以下命令来验证 Redis 是否成功安装并正在运行:
redis-cli ping
如果 Redis 正常运行,它将返回 “PONG”。
停止 Redis 服务器:
brew services stop redis
通过源码安装
安装编译软件
yum -y install gcc gcc-c++ kernel-devel
创建安装目录
mkdir -p /usr/local/redis
下载源代码并解压
wget https://download.redis.io/redis-stable.tar.gz tar -xzvf redis-stable.tar.gz
进入都目,编译安装
cd redis-stable make prefix=/usr/local/redis/ install
make install默认安装到/usr/local/bin目录下,如果需要指定安装路径,需要添加PREFIX参数
拷贝配置文件
mkdir /usr/local/redis/conf cp redis.conf /usr/local/redis/conf/
修改 redis.conf 加入以下配置:
# 允许哪些 IP 地址可以访问 bind 0.0.0.0 # 以守护进程的方式运行 daemonize yes # 设置密码授权 requirepass <设置密码>
启动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
参数说明:
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 安装
TODO
通过 docker-compose 安装
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 安装
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: