
说实话我平时帮人看缓存环境问题几乎每周都会回答一次“Redis 怎么装”这种问题。Redis本身不大但麻烦就麻烦在Windows和Linux两套思路完全不同网上的教程又各说各话有的只讲一个平台有的默认你已经会Linux命令。这篇我干脆把两条线合并成一份完整的实操笔记从下载、解压、启动到注册服务、配置参数、开放防火墙、可视化连接、常见报错全程用我实测过的命令和步骤Windows和Linux都有。你可以当成对照手册用也可以只挑自己需要的平台顺着走一遍。新手可以完全照抄老手直接跳到第4节、第5节看配置和经验部分。另外说明一点凡是需要敲命令的地方我都不只贴命令而是把为什么这么写也讲清楚。比如Windows下为什么用 redis-cli ping 来测试、Linux下为什么一定要设 requirepass这些细节才是新手真正容易卡住的地方。1. 安装前的思路拆解先把三件事想清楚1.1 为什么 Windows 和 Linux 的安装方式完全不同先说一个很多人容易误解的点Redis官方并不正式支持Windows。官网下载的源码包在Windows上直接编译是跑不起来的。原因在于Redis底层大量使用了fork()创建子进程、epoll事件模型、信号量这类POSIX能力而Windows内核的进程模型和I/O通知机制跟Linux完全不是一套东西。所以Windows上能用的Redis本质上都是第三方移植版本要么是微软早期维护的那个分支要么是社区持续更新的移植版。这也决定了你该怎么选方案本地学习、单机开发调试用Windows原生移植版最省事解压即用。想模拟生产环境、认真研究Linux命令用WSLWindows Subsystem for Linux安装Linux版。做性能预演、线上部署就直接在Linux服务器或容器里跑。这三种方式的安装步骤我都跑过。这篇文章先讲最常见的Windows原生方式再讲Linux包管理和源码安装最后统一讲配置和排错。如果你在Windows上已经装了WSL其实可以跳到第3节直接在WSL的Linux终端里执行体验和真机Linux几乎一样。1.2 版本选型别一上来就追新也别捡旧选版本是安装前最容易被忽略的一步。Redis版本迭代不算特别激进但大版本之间的行为差异还是有的。目前7.x是主力版本6.x的兼容性最稳5.x已经明显偏老。我的建议是装当前最新的稳定release比如7.2.x这类因为从7.0开始Redis引入了新命令、更好用的内存管理信息和命令级权限控制客户端兼容性也已经很成熟不会遇到生态跟不上版本的问题。下载渠道也要留个心眼。Windows版的安装包我建议只认两个来源一是tporadowski维护的Windows移植仓库二是微软官方归档的Redis分支。很多第三方下载站给的要么是五六年前的旧版要么压缩包里塞了一堆广告程序。下载之后右键看下文件属性确认数字签名和版本号再解压也不迟。装之前还有一件小事花十秒检查6379端口有没有被占用。Windows下可以这样看netstat -ano | findstr :6379Linux下用ss -lntp | grep 6379如果有输出说明机器上可能已经装过Redis或者别的服务占了这个端口先把冲突处理掉再继续否则后面启动Redis会提示bind失败白白浪费时间。2. Windows 下安装两种路子实测都能用2.1 原生安装解压就能跑Windows原生版Redis的使用方式非常简单下载zip包后解压到一个目录比如C:\redis里面就能看到几个关键文件redis-server.exe、redis-cli.exe、redis-benchmark.exe。redis-server.exe是服务端redis-cli.exe是命令行客户端后续几乎都要用到这两个。启动服务端双击redis-server.exe或者打开命令行窗口执行redis-server.exe看到启动日志里出现Redis版本号、端口号6379、大概的内存信息说明服务已经起来了。这时先别关这个窗口再开一个新的命令行窗口进入目录执行redis-cli.exe ping如果返回PONG说明客户端和服务端通信正常到这里Windows上的Redis其实已经算安装成功了。第一次启动没有指定配置文件Redis会使用默认配置监听127.0.0.1:6379只允许本机访问。这里先跑通不用急着改配置。很多人双击redis-server.exe会闪退大多数原因是缺少VC运行库也就是Visual C Redistributable。先用命令行方式启动能看到具体的报错信息比双击一闪而过好排查得多。2.2 花5分钟把 Redis 注册成 Windows 服务手动启动有一个明显问题命令行窗口一关服务就停了Windows每次开机后都要手动跑一遍太麻烦。Redis的Windows移植版其实自带Windows服务注册能力可以把它变成一个后台服务。用管理员身份打开命令行切换到Redis解压目录然后执行redis-server.exe --service-install redis.conf --service-name Redis参数解释一下--service-install表示把Redis安装成Windows服务redis.conf是服务启动时要读取的配置文件--service-name给服务命名一台机器上想跑多个Redis实例时这个名字尤其重要。注册完成后再执行启动命令redis-server.exe --service-start --service-name Redis之后打开Windows的服务管理器就能看到名为Redis的服务把它设为自动启动以后开机就自动运行了。需要卸载时执行redis-server.exe --service-uninstall --service-name Redis。这里有一个很典型的坑执行服务安装命令时没有用管理员权限结果提示“拒绝访问”。所以记住涉及Windows服务操作第一步永远是右键命令行工具选择“以管理员身份运行”。2.3 端口与防火墙本地跑通不等于别处能连本机能ping通只代表Redis自己在正常工作。如果想让局域网里的其他机器也连上来Windows防火墙默认会拦截外部对6379端口的访问。放行方式有两种在控制面板的“允许应用通过防火墙”里把redis-server.exe加进去或者更精细一点在“高级安全Windows Defender防火墙”里新建入站规则专门放行TCP 6379端口。很多人搜过“windows 关闭端口号”这类关键词这里顺便说清楚端口本身没有“关闭”这个概念你能做的只有两种要么让占用它的进程停止监听要么用防火墙规则阻断入站流量。千万不要为了开一个Redis把整个Windows防火墙关掉那等于把整台机器的大门敞开了。如果6379端口已经被占用用前面的netstat命令查到占用进程的PID然后去任务管理器确认一下是不是正在运行的Redis确认后才结束它。另外如果你用的是云服务器除了操作系统自带的防火墙云控制台里的安全组也要放行6379端口。这两层缺一不可忘了哪个都会导致外部连接超时。3. Linux 下安装包管理器优先源码编译兜底3.1 一行命令搞定 Ubuntu、CentOSLinux下装Redis绝大多数场景不需要源码编译最快的路径是包管理器。Ubuntu、Debian这些Debian系发行版执行sudo apt update sudo apt install redis-server -y安装完成之后Ubuntu上的Redis服务通常已经自动启动了用systemctl status redis-server能直接看到状态。CentOS、RHEL这些RedHat系发行版执行sudo dnf install redis -y如果是老一点的CentOS 7用sudo yum install redis -y装完之后手动执行systemctl start redis再执行systemctl enable redis设置开机自启。包管理器安装的好处是文件路径、启动脚本、systemd服务文件都符合发行版标准后续升级和卸载都很方便。缺点也有仓库里的版本可能比官方最新版慢半个版本但Redis本身行为稳定缺一个小版本号对你的学习和使用没有任何影响。生产环境我反而推荐这种方式稳定优先。还要记住不同发行版的配置路径不一样。Ubuntu和Debian的配置文件通常在/etc/redis/redis.confCentOS可能直接在/etc/redis.conf。如果找不到用redis-server --version看下版本再用which redis-server反向推断安装路径基本就清楚了。3.2 源码编译安装适合什么人如果你需要最新版特性或者想自己定制编译参数才建议走源码编译。整个过程也不复杂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 -j4 sudo make installmake -j4里的数字表示用几个线程并行编译如果你CPU是8核以上可以改成-j8加速。编译过程中如果提示缺头文件多半是系统没有完整的编译工具链Ubuntu上执行sudo apt install build-essential补上再重试。make install执行完之后redis-server和redis-cli会安装到/usr/local/bin下配置文件模板在解压出来的源码目录里叫redis.conf。对新手来说我不推荐一上来就编译除非实在有需要因为编译时看到一屏warning很容易让人慌其实大部分warning不影响运行。想省心就用包管理器。3.3 systemd 接管让 Redis 常驻并开机自启发行版自带的Redis包几乎都已经配好了systemd服务单元直接用systemctl管理就行。如果是源码编译安装需要自己写一个服务文件。写之前记住一个重要原则在redis.conf里把daemonize设为no让Redis前台运行由systemd来管理进程生命周期。这样才能保证systemd能正确识别Redis进程实现守护和开机自启。写一个/etc/systemd/system/redis.service内容可以参考[Unit] DescriptionRedis Server Afternetwork.target [Service] ExecStart/usr/local/bin/redis-server /etc/redis/redis.conf ExecStop/usr/local/bin/redis-cli shutdown Restartalways Userredis Groupredis [Install] WantedBymulti-user.target然后依次执行sudo systemctl daemon-reload sudo systemctl enable redis sudo systemctl start redisUserredis的意思是让Redis以普通用户身份运行这是安全基线要求千万不要用root跑Redis。我这里专门强调一下是因为见过太多生产事故都源于进程权限过高。如果你系统里还没有redis用户先执行sudo useradd -r -s /sbin/nologin redis创建一下。4. 装完别急着收工配置和连通性验证4.1 redis.conf 里那几个必须改的参数不管Windows还是LinuxRedis装完第一件事不是写业务代码而是打开配置文件把下面这几个基础参数校一遍。表格里先看结论参数默认值建议值原因bind127.0.0.1 -::1127.0.0.1 或内网IP控制监听网卡避免暴露到公网protected-modeyesyes无密码时拒绝外部连接的保护机制requirepass无自定义强密码没密码等于裸奔被扫到就是入侵port63796379 或自定义客户端配置要对应appendonlynoyes开启AOF持久化重启数据不丢daemonizenonoLinux下由systemd管理进程maxmemory无限制512mb 等具体数值防止Redis吃满服务器内存bind 127.0.0.1是默认的安全配置只有需要让局域网或公网访问时才改成内网IP。千万不要图省事直接绑0.0.0.0那等于所有网卡都开放了。protected-mode yes在未设置密码时会拒绝外部连接和requirepass是配套使用的。如果你设了密码外部连接是可以带上密码进来的所以还是要靠bind限制来源网段。appendonly yes是持久化关键项建议开启。AOF会把写命令追加到日志文件配合appendfsync everysec性能和安全性能平衡。maxmemory在生产环境尤其重要Redis默认不限制内存使用一个不小心就会把服务器内存全部吃掉设置一个明确的上限比如512mb或2gb再配合maxmemory-policy allkeys-lru让Redis在内存满时按LRU淘汰旧key。修改完配置后需要重启Redis服务才会完整生效。4.2 命令行验证三板斧配置改完用redis-cli做三步基础验证。第一步验证连通性redis-cli -h 127.0.0.1 -p 6379 ping如果设了密码需要带上认证参数redis-cli -h 127.0.0.1 -p 6379 -a 你的密码 ping返回PONG说明服务可连。第二步验证写入和读取redis-cli set test_key hello redis-cli get test_key能写入、能取回说明内存数据结构工作正常字符集也没问题。第三步看运行状态redis-cli info server redis-cli info memory重点看redis_version、uptime_in_seconds、used_memory_human确认版本号和你预期一致运行时间不是刚重启的内存占用符合实际写入量。这里补一个经验生产环境下密码不要直接写在命令行参数里因为它会出现在shell历史和进程列表里。更安全的做法是通过环境变量传入Linux下可以这样执行export REDISCLI_AUTH你的密码 redis-cli -h 127.0.0.1 pingWindows的cmd里设置环境变量稍微麻烦一点本地开发环境用-a问题不大养成好习惯就行。4.3 可视化客户端怎么连命令行能用之后很多人还想装一个可视化客户端。Windows和Linux桌面我比较推荐Another Redis Desktop Manager开源、跨平台、更新也勤。连接配置很简单地址填Redis服务的IP本机就填127.0.0.1端口6379密码填requirepass设置的值点击测试连接成功就能进主界面。ARM默认连接不成功时最常见原因不是Redis配置错了而是防火墙没有放行端口。Linux下如果用ufw执行sudo ufw allow 6379如果是firewalld执行sudo firewall-cmd --permanent --add-port6379/tcp sudo firewall-cmd --reloadWindows下回到第2.3节说的防火墙规则处理。还有一种情况是云服务器安全组没放行这也是新手最容易漏掉的。从客户端连不上服务器时我一般的排查顺序是先ping通不通IP再用telnet测端口通不通最后才回头查Redis配置而不是一上来就反复重启Redis。5. 高频问题与排错实录5.1 常见问题速查表我整理了一张高频问题表基本覆盖了我这几年遇到的大部分安装期问题。遇到问题时先对着表自查一遍比自己瞎试高效很多。现象可能原因处理方式redis-server.exe 双击闪退缺VC运行库安装Visual C Redistributable后重试redis-server 启动日志报 bind 失败6379端口被占用用netstat/ss查占用PID处理后重启redis-cli ping 超时服务没启动或防火墙拦截确认进程状态放行6379端口Redis只能本机访问别的机器连不上bind仍为127.0.0.1修改bind为内网IP并重启远程连接提示DENIEDprotected-mode开启且无密码设置requirepass或限定bind来源systemctl start redis启动失败配置文件语法错误前台运行redis-server看错误日志改了密码但总被配置覆盖开启了config rewrite确认requirepass写在redis.conf正式段里找不到redis-cli命令源码安装路径不在PATH用绝对路径或创建软链接Redis内存一直涨没有设置maxmemory配置maxmemory和maxmemory-policy持久化文件特别大没有开启自动重写配置auto-aof-rewrite相关参数5.2 我踩过的几个坑第一个坑是下载路径。早期图省事从第三方下载站找一个Windows版Redis结果版本老得离谱压缩包里还绑了一堆推广程序。后来学乖了只从GitHub仓库的Release页面下载核对版本号和数字签名再也没发生过类似问题。第二个坑是Linux下混用了daemonize和systemd。我曾经在redis.conf里把daemonize设成yes准备自己后台跑同时又想用systemd做守护结果systemd管理一个fork出来的进程逻辑完全乱套重启时一直报“PID file exists”。后来想清楚了系统里有systemd就让systemd全权管理Redis只在后台前台运行。这个原则帮我在之后的主从、哨兵环境里省了很多事。第三个坑是日志路径。源码编译安装时我随手在redis.conf里写了一个不存在的日志目录比如/var/log/redis/redis.log但没提前创建目录Redis启动时直接报错。Redis不会自动创建日志目录必须在启动前mkdir -p /var/log/redis。这个坑很小但排查起来很花时间写在这里给后来人提个醒。第四个坑是远程连不上反复重启Redis。有一回我在Windows上用Redis Desktop Manager连Linux服务器怎么都连不上我以为是Redis没开好重启了三次。最后检查才发现云服务器安全组里压根没放行6379端口。从那以后我养成了先查防火墙和云安全组、再碰Redis配置的习惯。5.3 卸载与清理卸载前记得备份数据。Redis有两种持久化文件RDB快照dump.rdb和AOF追加日志appendonly.aof。先手动触发一次快照redis-cli save然后找到持久化文件位置Windows默认在Redis解压目录Linux一般在/var/lib/redis。确认拷贝完毕之后再卸载。Windows下卸载分两步先删除服务执行redis-server.exe --service-uninstall --service-name Redis再删除Redis解压目录配置文件和数据文件都一起清掉了。Linux下如果用包管理器安装Ubuntu里执行sudo apt purge redis-serverCentOS里执行sudo dnf remove redis。源码编译安装的手动删除 /usr/local/bin 下的redis-server和redis-cli再删除对应的配置目录和日志目录。残留配置一般在/etc/redis确认不需要后一并删除。卸载这件事看起来简单但很多人会忘了先备份等发现业务数据没了才追悔莫及。别问我怎么知道的。装完Redis只是第一步。我个人更愿意把安装这件事看成一套组合拳选对平台、守住安全底线、配好持久化和内存策略然后再去考虑数据类型、分布式锁、序列化这些进阶话题。如果你按照这篇走下来本地或服务器上已经跑起来一个稳定、带密码、能开机自启的Redis那后面做题也好、写项目也好基础就都打牢了。最后分享一个小经验不管哪个平台装完Redis之后我永远是先设requirepass再改bind和appendonly然后才测ping和set。顺序反过来的话Redis会在你毫无防备的时候裸奔一段时间。先把安全和持久化配好后面排查问题会轻松非常多。