ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Redis安装实操指南:Windows、macOS、Linux与Docker全覆盖

Redis安装实操指南:Windows、macOS、Linux与Docker全覆盖 见过不少把Redis概念讲得很溜的同学什么分布式锁、缓存穿透、哨兵集群聊起来头头是道。结果一到真要动手装Redis直接在第一步就卡住了——官网下载页面看不懂、装完启动报错不知道怎么查、Windows上压根找不到官方安装包。Redis安装这件事本身不复杂但正因为太基础网上的教程碎片化严重往往只讲一条路比如只讲Linux或者只讲Windows换台电脑就得重新搜。这篇我就把主流的安装路径全整理一遍从Windows、macOS、Linux到Docker每条路都带实操命令、配置文件修改和验证方法尽量让不同环境的读者都能照着抄少走弯路。1. 安装前必须想清楚的三件事版本、平台和目的很多教程上来就让你下载安装包但装Redis之前有几个认知其实比命令本身更重要先花两分钟看明白后面能省不少事。1.1 官方早就不维护Windows版了这是新手最容易踩的第一个坑。打开Redis官网download页面你会发现上面根本没有Windows安装包而且官方明确说了Redis不支持Windows。市面上所谓的Redis Windows版基本都是两个来源一个是微软早期维护的一个分支后来不更新了被民间开发者tporadowski接着维护版本停留在5.x另一个是Memurai这种商业替代品。所以Windows上装Redis本质上就是拿一个非官方版本或者通过WSL2跑。如果你的目的是学习、做本地开发调试用社区提供的Windows发行版没问题如果是要上生产直接放弃Windows老老实实用Linux或者Docker。1.2 版本怎么选写这篇文章的时候Redis最新主线已经到了7.x/8.x。对大多数场景我建议选7.2或者7.4这种较为成熟的稳定版原因很简单6.x到7.x之间做了大量核心改进比如AOF重构、命令执行效率优化7.x的稳定性已经过大规模验证资料也多遇到问题容易搜。不建议用太老的5.x、6.x除非项目里依赖了老版本特性。下面的各平台安装命令里我会用能拉到的稳定版为准你装的时候也可以去redis官网release页面看一眼最新版号。1.3 你要用它来干什么装之前想清楚用途直接决定安装方式只是为了学命令、跑Demo本机单机版就够了Windows/macOS/Linux都行。给公司项目做开发联调跟着项目环境保持一致项目用Docker就也在Docker里装项目在Linux服务器就装Linux版。准备上生产或搞集群必须在Linux环境配合systemd管理强烈建议用Docker或容器化编排后面扩容、迁移都方便。这个判断我做在前面是因为下面要讲的几种安装方式耗时差异很大。Windows手动部署十分钟Docker拉镜像其实就一条命令但很多人恰恰被最简单的Docker卡住过——镜像拉下来了容器起不来所以每个环节我都会把容易出问题的地方标出来。2. Windows下安装Redis三种方式按需选择2.1 MSI安装包最省心但版本受限如果你就想在Windows上有一个能跑的Redis最省心的是到GitHub上找tporadowski/redis这个仓库的Release页面下载MSI安装包。这个包会把Redis装到C:\Program Files\Redis自动配好环境变量还会帮你注册一个名为Redis的Windows服务。装完直接用命令验证redis-cli ping看到PONG就说明服务已经在跑了。这种方式最大的优点是省事缺点是版本停留在5.0.x很多新特性比如ACL、Redis Functions体验不到。如果你只是练练基本数据类型和缓存操作完全够用。2.2 ZIP解压手动部署同样版本老但你能看到内部结构我个人其实更推荐新手用ZIP包手动部署一次因为你能亲眼看到Redis到底由哪些文件组成redis-server.exe是服务端redis-cli.exe是命令行客户端redis.windows.conf是配置文件。把这些关系搞清楚了之后再换到任何平台都能快速理解。操作步骤在Release页面下载Redis-x64-5.0.14.1.zip解压到比如D:\Redis。命令行进入目录启动服务redis-server.exe redis.windows.conf窗口显示Running since的信息说明启动成功。新开一个终端用客户端验证redis-cli.exe ping这里有个细节如果直接双击redis-server.exe它可能报错或者找不到配置文件最好还是通过命令行显式指定redis.windows.conf。手动启动是前台运行的终端一关Redis就停了所以要把Redis常驻后台就得注册成Windows服务。2.3 注册Windows服务解决开机自启和后台运行用管理员身份打开PowerShell或CMD在Redis目录下执行redis-server.exe --service-install redis.windows-service.conf --service-name Redis然后用服务命令管理redis-server.exe --service-start --service-name Redis redis-server.exe --service-stop --service-name Redis或者直接在服务管理面板里找到Redis启动它。这里有个不太起眼但很重要的点注册服务时指定的是redis.windows-service.conf不是redis.windows.conf两个配置文件内容不完全一样。你后面如果要改密码、开持久化改的是redis.windows-service.conf改完记得重启服务。2.4 WSL2方案Windows里跑真正的Linux Redis如果Windows上不想永远被困在5.x又想体验最新版本强烈建议用WSL2。装好WSL发行版比如Ubuntu后在WSL终端里按下面第4节Linux的方式安装就可以跑真正官方版本的Redis。它的启动和停止方式跟Linux完全一样但要注意WSL里的Redis默认监听的是WSL子系统的网络接口Windows本机的程序要想连它一般用127.0.0.1:6379是能通的WSL2做了一层端口转发跨机器访问则要额外配置端口转发规则比较绕。所以目前最适合Windows开发者的组合是日常调试用MSI版或Docker做深入学习时用WSL2。3. macOS安装RedisHomebrew一条命令的开销与细节macOS用户装Redis九成人都会用Homebrew因为确实太方便了但也正因为它太方便很多人忽略了配置文件在哪里、怎么改、怎么让配置长期生效。3.1 安装与常用命令前提是你已经装了Homebrew。安装命令brew install redis装完以后Redis不会自动启动需要手动启动。两种方式各有适用场景# 前台运行适合调试关掉终端就退出 redis-server # 注册为后台服务开机自动启动适合日常开发 brew services start redis用brew services管理的好处是macOS会把它交给系统的launchd托管重启电脑Redis自动恢复。检查服务状态brew services list看到redis那一行status是started就说明在跑。3.2 配置文件位置与修改Homebrew装Redis后配置文件默认位置要看芯片架构这是很多教程没说清的地方Apple SiliconM1/M2/M3/opt/homebrew/etc/redis.confIntel Mac/usr/local/etc/redis.conf想改密码、开AOF持久化就编辑这个文件。比如设置密码找到这一行# requirepass foobared去掉注释改成requirepass yourpassword保存后用brew services restart redis重启再用redis-cli -a yourpassword ping验证。这里提醒一句如果直接用redis-server前台启动它默认读的配置文件路径可能不是你改的这个走brew services是最不容易出错的。3.3 前台调试时顺手排查端口占用偶尔会遇到启动直接报错说Address already in use多半是之前有过一个redis进程还占着6379端口。查端口和进程lsof -i :6379找到PID后可以kill -9 PID清理掉再重新启动。另外redis-cli ping如果返回PONG而你是刚启动的那说明也有可能系统里已经有一个Redis在跑比如系统自带的、或者之前brew services开的启动前先看看是不是已经在运行免得自己把自己搞糊涂。4. Linux服务器安装Redis包管理器与编译安装的取舍Linux是Redis真正的主场生产环境几乎全是Linux。这一节我会讲两条路包管理器安装和源码编译安装。两条路我都跑过各自特点很明显。4.1 包管理器安装几秒钟搞定但版本往往落后Ubuntu/Debian系列sudo apt update sudo apt install -y redis-serverCentOS/RHEL 8系列sudo dnf install -y redis装完一般会自动启动并注册为systemd服务状态可以直接看systemctl status redis-server # Ubuntu下服务名一般是 redis-server systemctl status redis # CentOS下服务名一般是 redis但这套方案有个隐患仓库里的Redis版本往往偏旧。Ubuntu 22.04自带的是6.0.xCentOS Stream 9的redis大概也是6.2左右。如果你的项目需要7.x的新特性或者你想跟着官方最新稳定版走就得用下面这个办法。4.2 源码编译安装版本自己掌握编译安装看起来步骤多但每一步都是透明的可控性最强。意外情况比如机器上没装编译工具也比较常见所以就按踩坑路径给你写。先装依赖sudo apt update sudo apt install -y build-essential下载并编译wget https://download.redis.io/releases/redis-7.2.4.tar.gz tar -xzf redis-7.2.4.tar.gz cd redis-7.2.4 make -j$(nproc) sudo make installmake install会把redis-server、redis-cli等二进制装到/usr/local/bin。此时直接运行redis-server也能启动但是前台模式也没有配置文件。正规做法是创建独立的配置目录和运行用户sudo mkdir -p /etc/redis sudo cp redis.conf /etc/redis/ sudo useradd --system --no-create-home redis # 创建一个系统用户防止Redis以root身份跑然后编辑/etc/redis/redis.conf至少改这几项# 让Redis在后台运行 daemonize yes # 指定日志文件避免所有日志丢给stdout logfile /var/log/redis.log # 指定数据目录和文件名 dir /var/lib/redis dbfilename dump.rdb # 如果端口要对外开放再按需改 bind bind 127.0.0.1目录权限也要处理sudo chown redis:redis /var/lib/redis /var/log/redis.log4.3 用systemd把它变成常驻服务编译安装不会自动注册systemd服务需要自己写unit文件。创建/etc/systemd/system/redis.service[Unit] DescriptionRedis Server Afternetwork.target [Service] Typeforking Userredis Groupredis ExecStart/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop/usr/local/bin/redis-cli shutdown Restarton-failure [Install] WantedBymulti-user.target然后执行sudo systemctl daemon-reload sudo systemctl enable redis sudo systemctl start redis验证状态和服务systemctl status redis redis-cli ping这里有一个容易忽略的点因为daemonize yesRedis启动后会fork出一个后台进程所以systemd的Type必须是forking。如果写成simple你会看到服务启动后立刻变成failed这是新手找半天都发现不了原因的经典问题。5. Docker安装Redis单机、认证、持久化与主从一次讲清Docker方式现在越来越主流因为它能让你在十分钟内同时拥有一个完整可用的Redis环境还不污染宿主机。但Docker装Redis有一个和原生安装不太一样的思维转变多数配置不是写在文件里让Redis读而是直接通过启动参数传给容器。5.1 拉镜像启动一个带密码的Redis先拉镜像docker pull redis:7.4直接起一个带密码的最小实例docker run -d \ --name my-redis \ -p 6379:6379 \ redis:7.4 \ redis-server --requirepass 123456说明一下镜像后面的redis-server --requirepass 123456就是容器启动时执行Redis的命令。登录验证docker exec -it my-redis redis-cli -a 123456 ping看到PONG就正常。如果你想看日志docker logs my-redis如果启动失败比如端口被占用、镜像参数写错docker logs是第一个要看的地方。5.2 持久化配置挂载数据卷和配置文件上面这个容器一旦删掉数据全没了。要持久化至少要挂载一个数据卷docker run -d \ --name my-redis \ -p 6379:6379 \ -v redis-data:/data \ redis:7.4 \ redis-server --requirepass 123456 \ --appendonly yes-v redis-data:/data把Redis的持久化文件目录映射到Docker卷--appendonly yes开启AOF持久化。删容器重建后数据还在。如果配置项特别多建议用宿主机配置文件挂载进去docker run -d \ --name my-redis \ -p 6379:6379 \ -v /myredis/redis.conf:/usr/local/etc/redis/redis.conf \ -v redis-data:/data \ redis:7.4 \ redis-server /usr/local/etc/redis/redis.conf宿主机里的redis.conf要提前准备好容器内Redis启动时会读取它。这里要注意容器里Redis进程默认不是root挂载进去的配置文件权限如果不对可能会报Permission denied一般644即可。5.3 用Docker搭主从复制热搜词里出现docker安装redis主从这确实是个高频需求。用Docker搭主从比在裸机搭还简单核心就两条容器网络互通、从节点配置里指向主节点的服务名和端口。先创建一个自定义网络docker network create redis-net启动主节点docker run -d \ --name redis-master \ --network redis-net \ -p 6379:6379 \ redis:7.4 \ redis-server --requirepass mypass --appendonly yes再启动从节点docker run -d \ --name redis-slave \ --network redis-net \ -p 6380:6379 \ redis:7.4 \ redis-server --replicaof redis-master 6379 \ --masterauth mypass \ --requirepass mypass解释两个关键参数--replicaof redis-master 6379告诉从节点你的主节点是redis-master这个容器、端口6379这种容器服务名解析靠的是同一个自定义网络--masterauth mypass是因为主节点设置了密码从节点同步专用密码不对会一直报MASTER AUTH failed。从节点测试docker exec -it redis-slave redis-cli -a mypass info replication看到role:slave和master_link_status:up说明主从已经同步。5.4 用docker compose统一编排上面这两个容器每次启动都要敲长命令用compose管理更优雅。创建docker-compose.ymlservices: redis-master: image: redis:7.4 container_name: redis-master ports: - 6379:6379 command: redis-server --requirepass mypass --appendonly yes redis-slave: image: redis:7.4 container_name: redis-slave depends_on: - redis-master ports: - 6380:6379 command: redis-server --replicaof redis-master 6379 --masterauth mypass --requirepass mypass在文件所在目录执行docker compose up -d一条命令拉起两个容器服务没起来的时候docker compose logs -f可以直接看日志。这套用法在开发环境里非常实用后面要扩展哨兵或者集群在这个基础上加服务即可。6. 安装完成后的配置检查清单别急着写代码先把这几项过一遍Redis装好以后很多人第一反应是打开客户端开始set/get但缺少几个安全性和可靠性配置后面迟早要回来补课。我每次给团队搭建Redis固定会检查下面这几项。6.1 密码与访问控制requirepass是最基础的认证但要注意主从场景下还有masterauth。如果你的从节点同步报错八成是主节点有密码但从节点没配masterauth。生产环境建议同时开启ACLRedis 6把不同业务用不同账号隔离但这属于进阶内容安装阶段至少把requirepass设满复杂度不要用123456这种。6.2 持久化RDB和AOF不是二选一Redis的数据默认在内存里进程一死全没了。持久化配置是关键RDB是定期快照默认的save规则是save 3600 1 300 100 60 10000意思是1小时内改了1次键、5分钟内改了100次、60秒内改了1万次满足任一条件就做一次快照。恢复快但可能丢最近几分钟数据。AOF是追加写日志appendonly yes开启appendfsync everysec表示每秒刷一次盘最多丢一秒数据对大多数业务够用。新手容易有个误区这两个不是互斥的生产环境通常会同时开。Redis重启时优先用AOF恢复因为数据更完整。也别以为开了AOF就万事大吉磁盘满了、权限不对Redis都可能启动失败所以装完一定要暴力测试一把写入数据、重启进程确认数据还在。6.3 日志与连接配置检查日志配置错误日志一定要落盘不然出了事无从查起。loglevel notice就能日常使用。连接这块默认maxclients 10000一般不用动但要注意别把文件描述符限制卡住了Linux下如果追求高并发ulimit -n需要配合调大。6.4 bind、protected-mode和防火墙的三角关系这是新手最容易撞墙的地方Redis装好了本机redis-cli ping正常别的机器就是连不上。常见原因就三个bind只监听本机、protected-mode开启导致外部网络拒绝、防火墙没放行6379端口。处理优先级建议先明确自己需不需要对外开放。如果只是本机用bind 127.0.0.1和protected-mode yes保持默认别改更安全。如果有局域网联调需求把bind改成内网IP或者bind 0.0.0.0同时必须有强密码最后检查防火墙Ubuntu用ufw statusCentOS用firewall-cmd --list-all。7. 可视化工具连不上从Redis Desktop Manager聊到Another Redis Desktop Manager命令行用多了之后很多人还是想用一个图形化界面来直观管理key。这里我先把坑说得明明白白。7.1 Redis Desktop Manager的现状以前说起Redis的可视化工具第一个必然是Redis Desktop Manager很多人叫它RDM。但RDM的新版本已经转向收费了网上流传的免费版是比较老的1.x时代版本功能凑合但偶尔会遇到连不上或命令兼容问题。所以现在如果你是新用户我不太推荐去找RDM的破解版或老版本尤其是团队协作场景版本混乱会很麻烦。7.2 免费且活跃的Another Redis Desktop Manager现在我更推荐开源免费的Another Redis Desktop ManagerGitHub上叫qishibo/AnotherRedisDesktopManager跨平台支持Windows/macOS/Linux更新时间频繁界面也比较现代还支持深色模式和多语言。从Release下载对应系统的安装包装好后打开新建连接。核心就是四项连接名称随便填Host填Redis所在服务器IP本机就填127.0.0.1Port默认6379Password是requirepass设置的密码。填完可以先点Test Connection通了再保存。7.3 连不上时按三段排查可视化工具连不上我强烈建议先不要干瞪眼按这个顺序排查确认服务端在跑命令行里redis-cli ping能不能通。这一步不行说明问题在服务端。确认认证方式工具里密码填了吗Redis日志里如果有NOAUTH相关字样说明是密码不对。确认网络可达本机能连、外网不能连回到上一节的bind、protected-mode、防火墙三角关系。另外说一下可视化工具里的常见乱码问题有些客户端用Java序列化之类的机制写入key/value在工具里看到的是一串类似\xac\xed的二进制这不是工具坏了是数据本身就是序列化后的字节。想看原始内容切换工具的视图模式就能看到不同形式。8. 装完Redis必踩的5个坑从排查思路到彻底解决这一节把我这些年见过、踩过的高频问题集中写出来每个问题都附一个完整的排查思路而不是只丢一个结论。8.1 redis-cli ping 显示Connection refused核心原因要么Redis进程没在运行要么端口没监听。排查顺序# 查进程 ps -ef | grep redis # 查端口Linux/macOS lsof -i :6379 netstat -an | grep 6379 # Windows netstat -ano | findstr 6379如果进程存在、端口也在监听ping还失败就检查redis-cli用的端口是不是6379以及连接的是不是127.0.0.1。如果你改过Redis监听端口比如跑多个实例时改成6380redis-cli默认还是连6379要用redis-cli -p 6380指定。8.2 NOAUTH Authentication required报这个错说明Redis有密码你没带或者带错了。正确做法redis-cli -a yourpassword或者在客户端里先进去再认证redis-cli AUTH yourpassword用-a传密码会有一条不安全提示日志这是正常的你也可以加--no-auth-warning抑制。顺便提一句如果是主从复制环境下从节点一直说Master auth失败检查的是masterauth不是requirepass这两者含义完全不同。8.3 Docker容器删了数据还在吗如果你只跑了docker run -d -p 6379:6379 redis没有任何-v挂载容器一删数据直接没了。要持久化就必须挂数据卷这是Docker装Redis最容易吃亏的地方之一。我用一句话概括镜像可以随便删但数据必须靠卷活着。8.4 Windows服务启动了又立刻停止Windows下注册服务后在服务管理面板点启动结果提示服务启动后停止。核心原因几乎都是配置文件有问题。服务读取的是redis.windows-service.conf你如果改了里面的密码或持久化配置导致语法错误Redis进程直接退出。排查手法到Redis目录手动跑一次redis-server.exe redis.windows-service.conf看回显错误信息会直接打到屏幕上比看事件管理器快很多。8.5 可视化工具卡死或连上但key看不到有些工具连上后如果库里有大量key默认全量扫描会卡半天。解决办法是使用工具的Pattern匹配功能比如输入user:*过滤。另外Redis默认有16个逻辑库0到15连接默认进的是0号库如果你的key在别的库当然看不到。这一点在工具连接配置里找一找DB选择项就行。9. 装完Redis只是开始下一步按这个顺序学到这一步Redis在你机器上已经能跑能连了但距离会用还有一段路。我建议按下面的顺序往下走每步都是前面一步的自然延伸。9.1 先把五大数据类型摸熟Redis最核心的资产就是数据类型。照着命令行一个个试String就是普通字符串和数值Hash适合存对象字段List适合做消息队列和简单栈Set做去重和集合运算ZSet做排行榜这类的有序去重集合。重点不在背命令而是体会为什么Redis能把那么多种数据结构存得又快又好。9.2 把缓存穿透、击穿、雪崩这三个场景搞清楚装完Redis很多人项目里第一个用途就是做缓存然后会碰到三类经典问题缓存穿透是查一个不存在的key每次都打到数据库缓存击穿是热点key突然过期高并发同时打到数据库缓存雪崩是大批key同时过期数据库瞬间压力爆炸。每种问题的应对思路不同缓存空值、互斥锁、过期时间加随机值都是安装之后值得花时间研究的实战内容。9.3 分布式锁和主从/哨兵集群留给下一个阶段等到单机Redis应付不了项目的并发和可用性要求就需要接触分布式锁和集群了。分布式锁的核心是利用SET key value NX EX 30这种原子命令高可用演进则是主从复制、哨兵模式、Cluster集群逐步升级。到这一步你再回头看安装阶段接触的replicaof、masterauth这些参数领悟会完全不同。我个人在实际操作里的体会是安装不过是Redis这座大山的山脚但恰恰是山脚决定了你后面走哪条路。别急着搜一堆高级概念先把环境跑稳、把配置项看明白再循序渐进往上走。踩过几次配置错了起不来的坑之后你反而会更珍惜这一个个看似基础的命令。
返回列表