【Redis】Linux、Windows、Docker 环境下部署 Redis

embedded/2025/2/12 1:02:02/

一、Linux环境部署Redis

1、卸载

# 查看 Redis 是否还在运行
[appuser@localhost redis]$ ps -ef|grep redis
appuser  135694 125912  0 14:24 pts/1    00:00:00 ./bin/redis-server *:6379
appuser  135731 125912  0 14:24 pts/1    00:00:00 grep --color=auto redis# 停止 Redis 
[appuser@localhost redis]$ redis-cli SHUTDOWN# 删除 Redis 安装的相关文件
[root@localhost ~]# find / -name redis  
[root@localhost ~]# rm -rf /xxx/xxx/xxx

2、安装

# 依赖安装
[appuser@localhost ~]$yum -y install gcc gcc-c++ libstdc++-devel# redis下载:https://redis.io/download
[appuser@localhost ~]$ tar -zxvf redis-6.2.3.tar.gz -C /app# 编译
[appuser@localhost ~]$cd /app/redis-6.2.3
[appuser@localhost redis-6.2.3]$ make# 编译可能报错:
zmalloc.h:50:31: error: jemalloc/jemalloc.h: No such file or directory
zmalloc.h:55:2: error: #error "Newer version of jemalloc required"
make[1]: *** [adlist.o] Error 1
make[1]: Leaving directory `/data0/src/redis-2.6.2/src'
make: *** [all] Error 2# 报错原因:分配器 allocator会使用 jemalloc,而不是 libc,因为相比于libc,jemalloc 有更少的 fragmentation problems。但是如果目前环境没有jemalloc,只有 libc,所以 make 出错
# 解决方法:使用环境变量 MALLOC 来建立Redis
[appuser@localhost redis-6.2.3]$ make MALLOC=libc# 安装
[appuser@localhost redis-6.2.3]$ make PREFIX=/app/redis install

Reids 的默认安装路径在/usr/local/bin,关键字 PREFIX 作用是编译的时候用于指定程序存放的路径。如果不添加该关键字,Linux会将可执行文件存放在/usr/local/bin目录,库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定好目录也方便后续的卸载,后续直接rm -rf /app/redis即可删除Redis

3、配置

  • Redis详细配置

4、启动Redis 服务器

Redis启动方式有两种:直接启动、通过初始化脚本启动,分别适用于开发环境和生产环境

  • 直接启动
# 拷贝一份配置文件
[appuser@localhost ~]$ cd /app/redis/bin
[appuser@localhost bin]$ ./redis-server ../redis.conf

配置文件redis.conf中设置daemonize=yes,则Redis将采取后台进程方式启动

  • 通过初始化脚本启动

在Linux中可以通过初始化脚本启动Redis,使得Reds能随系统自动运行,在生产环境中推荐使用该方式运行Redis。具体步骤如下:

① 配置初始化脚本:在redis-6.2.3/utils文件夹下有一个初始化脚本文件redis_init_script,将该脚本复制到ect/init.d目录中,文件重命名为redis_端口号,并将脚本中REDISPORT变量值改为同样的端口号。

② 创建文件夹:/etc/redis(存储redis的配置文件)、/var/redis/端口号(存放redis持久化文件)

③ 修改配置文件:将配置文件模板复制到/etc/redis目录中,重命名为端口号.conf,并修改一下参数:

# 使Redis以守护进程模式进行
daemonize=yes
# 设置Redis的PID文件位置
pidfile=/var/run/redis_端口号.pid
# 设置Redis监听的端口号
port=端口号
# 设置持久化文件存放位置
dir=/var/redis/端口号

现在就可以使用/etc/init.d/redis_端口号 start 来启动Redis了,而后需要执行下面的命令使Redis随系统自动启动:

[root@localhost ~]# sudo update_rc.d redis_端口号 default

5、停止 Redis

Redis 有可能正在将内存中的数据同步到硬盘中,强行终止Redis进程可能会丢失数据,正确方式是向Redis发送 SHUTDOWN命令

[appuser@localhost bin]$ ./redis-cli SHUTDOWN

当 Redis收到 SHUTDOWN命令后会先断开所有客户端链接,然后根据配置执行持久化,最后退出。

Redis 可以妥善处理SIGTERM信号,所以使用kill Redis进程的PID 也可以正常结束 Redis,效果同 SHUTDOWN命令。

6、客户端

通过 redis-cli 向 Redis 发送命令有两种方式:

  • 将命令作为redis-cli的参数执行
[appuser@localhost bin]$ ./redis-cli -h 127.0.0.1 -p 6379 PING
  • 交互模式
# 不携带参数进入交互模式
[appuser@localhost bin]$ ./redis-cli
127.0.0.1:6379> auth 123456@rds
127.0.0.1:6379> PING

二、Windows 环境部署 Redis

1、部署

(1)下载

目前 Redis官网 没有提供Windows版本的安装程序,如果需要安装,需要到Github上下载适合Windows的版本。

具体下载地址为:

  • Redis-x64-3.0.504.zip
  • Redis-x64-5.0.14.1.zip

(2)解压

将下载的压缩包解压到任意一个目录

(3)创建日志文件

Redis 解压后的根目录,新建 Logs 目录,然后在该目录下新建 redis_log.txt 文件。

否则,在进行下面操作的时候会报 Redis service failed to start. 错误。

2、启动

命令行进入刚才解压文件的根目录下,执行命令:

Z:\Program Files\Redis-x64-3.0.504> redis-server.exe redis.windows.conf

这种方式一旦关闭命令行,Redis 服务就关闭了,所以需要将 Redis 安装成系统(Windows)服务。

3、Windows 服务

命令行进入redis 根目录下,执行命令:

Z:\Program Files\Redis-x64-3.0.504> redis-server.exe --service-install redis.windows-service.conf --loglevel verbose --service-name Redis

执行成功后,可以在 Windows 的系统服务(命令行输入 services.msc)中找到该服务(服务名称为 redis),对应的配置文件是 redis.windows-service.conf,对应上面注册服务时使用的配置文件,所以后续的自定义配置就需要修改这个文件。

4、Redis 命令

# 安装服务
./redis-server.exe --service-install# 卸载服务
./redis-server.exe --service-uninstall# 开启服务
./redis-server.exe --service-start# 停止服务
./redis-server.exe --service-stop# 开启 CLI 模式
./redis-cli.exe -h 127.0.0.1 -p 6379

三、Docker 部署 Redis 集群

1、单机伪集群

# 1、创建自定义网络
docker network create redis --subnet 172.38.0.0/16# 2、创建六个Redis配置文件
for port in $(seq 1 6); \ 
do \ 
mkdir -p /app/redis/node-${port}/conf 
touch /app/redis/node-${port}/conf/redis.conf 
cat << EOF >/app/redis/node-${port}/conf/redis.conf 
port 6379  
bind 0.0.0.0 
cluster-enabled yes  
cluster-config-file nodes.conf 
cluster-node-timeout 5000 
cluster-announce-ip 172.38.0.1${port} 
cluster-announce-port 6379 
cluster-announce-bus-port 16379 
appendonly yes 
EOF 
done# 3、启动Redis容器
for port in $(seq 1 6); \ 
do \ 
docker run -p 637${port}:6379 -p 1637${port}:16379 --name redis-${port} \
-v /app/redis/node-${port}/data:/data \
-v /app/redis/node-${port}/conf/redis.conf:/etc/redis/redis.conf \
-d --net redis --ip 172.38.0.1${port} redis redis-server /etc/redis/redis.conf
done# 4、创建集群
docker exec -it redis-1 /bin/sh
redis-cli --cluster create --cluster-replicas 1 172.38.0.11:6379 172.38.0.12:6379 172.38.0.13:6379 172.38.0.14:6379 172.38.0.15:6379 172.38.0.16:6379 

http://www.ppmy.cn/embedded/161468.html

相关文章

Spring框架学习大纲

Spring框架学习大纲 一、Spring基础入门 Spring概述 Spring框架发展历史与核心优势Spring核心模块组成&#xff08;IoC、AOP、Data Access、Web MVC等&#xff09;Spring与传统Java EE开发对比 控制反转&#xff08;IoC&#xff09;与依赖注入&#xff08;DI&#xff09; IoC…

进阶数据结构——单调队列

目录 一、单调队列的核心思想与本质二、单调队列的应用场景1. 滑动窗口最大值2. 区间最值查询3. 优化动态规划 三、单调队列的实现与优化1. 双端队列的选择2. 单调性的维护3. 空间压缩 四、单调队列的复杂度分析五、单调队列的变种与高阶应用1. 二维单调队列2. 带限制的滑动窗口…

Python Pandas(5):Pandas Excel 文件操作

Pandas 提供了丰富的 Excel 文件操作功能&#xff0c;帮助我们方便地读取和写入 .xls 和 .xlsx 文件&#xff0c;支持多表单、索引、列选择等复杂操作&#xff0c;是数据分析中必备的工具。 操作方法说明读取 Excel 文件pd.read_excel()读取 Excel 文件&#xff0c;返回 DataF…

安全研究员职业提升路径

阶段一&#xff1a;基础能力沉淀期&#xff08;0-3年&#xff09; 目标薪资&#xff1a;15-30万/年&#xff08;国内&#xff09; 核心技能 掌握渗透测试全流程&#xff08;Web/App/内网&#xff09;熟练使用BurpSuite、Metasploit、IDA Pro等工具理解漏洞原理&#xff08;如O…

创新领先!珈和科技获评省级企业技术中心

为充分发挥中小企业创新主体作用&#xff0c;提高自主创新、集成创新和引进消化吸收再创新能力&#xff0c;增强创新驱动发展的动力&#xff0c;做好专精特新“小巨人”企业的培育工作。 近日&#xff0c;湖北省经信厅对申报2024年湖北省中小企业技术中心的企业进行审核认定并…

【高级架构师】计算机网络基础:第二章 计算机网络体系结构(下)

文章目录 第二章 计算机网络体系结构2.5 运输层2.5.1 运输层概述2.5.2 端口号2.5.3 传输控制协议TCP2.5.4 TCP可靠传输的实现2.5.5 用户数据报协议UDP2.5.6 TCP和UDP的区别 2.6 wireshark2.6.1 wireshark的安装2.6.2 界面介绍2.6.3 wireshark过滤器2.6.4 使用wireshark分析TCP三…

Git仓库托管基本使用05——远程仓库操作

推送 推送操作是将本地分支的更改同步到远程仓库。以下是具体步骤和命令&#xff1a; 1.1 确保本地更改已提交 在推送之前&#xff0c;你需要确保所有更改已经提交到本地分支。可以使用以下命令检查状态并提交更改&#xff1a; # 查看当前更改 git status# 添加所有更改到暂…

如何精确掌控网页布局?深入解析 CSS 样式与盒模型

系列文章目录 01-从零开始学CSS选择器&#xff1a;属性选择器与伪类选择器完全指南 02-避免样式冲突&#xff1a;掌握CSS选择器优先级与层叠规则的终极指南 03-如何精确掌控网页布局&#xff1f;深入解析 CSS 样式与盒模型 文章目录 系列文章目录前言一、CSS 样式基础1.1 字体…