资讯详情

macOS上安装Redis:从Homebrew到配置与避坑指南

📅 2026/10/6 3:18:02 | 华诺云谱 👁 阅读
macOS上安装Redis:从Homebrew到配置与避坑指南
1. macOS安装Redis到底该选哪条路先说结论在macOS上安装Redis绝大多数人不需要自己编译源码也没有必要折腾复杂的容器化方案最快最稳的方式就是直接用Homebrew装。我见过太多新手一上来就去看官网的Redis下载页面下载源码包然后make编译结果在Mac上踩了一堆坑最后跑不起来还说不清楚为什么。你可能会问为什么一定要在macOS上装Redis因为现在很多人的开发机就是MacBook写后端、做中间件测试、研究缓存治理都离不开Redis。就算你已经在服务器上部署了Redis本地开发调试的时候有个单机实例也方便得多。而且macOS本身是类Unix系统很多工具链和Linux是相通的装好Redis之后命令行的使用体验基本一致。这篇文章适合谁看刚接触Redis、想在Mac上把它跑起来的初学者以及想了解Redis连接工具、可视化客户端、主从部署思路的进阶用户。我不会只贴安装命令还会把背后的选择逻辑、配置参数、可视化工具对比、常见坑位都掰开揉碎讲清楚。整篇文章基于我自己的实操经验步骤都是验证过的你可以直接照着抄。1.1 三种主流安装方式怎么选macOS上装Redis常见的也就三条路Homebrew安装、源码编译、Docker容器。每条路都有自己的适用场景没有绝对的好坏。Homebrew安装是最推荐的理由特别朴素一条命令装完依赖自动处理升级也方便。Redis很多依赖库如果自己编译光处理gcc版本和OpenSSL兼容性就够喝一壶的Homebrew把这些都替你搞定了。对于绝大多数人来说这就是正解。源码编译适合什么情况你需要的Redis版本比较老Homebrew源里找不到或者你有定制化编译参数的需求比如想开启特定的内存分配器。但说实话现在还在本地源码编译Redis的人越来越少了调试成本太高。Docker方案则是另一套思路你本机跑的Mac是不是干净不重要镜像拉下来容器跑起来就行。它最大的优势是环境隔离和快速清理最适合你要跑多套Redis实例、或者模拟主从集群的时候。这三者怎么选我给你的建议很简单日常开发用Homebrew装图省事要模拟分布式环境、主从复制的时候用Docker因为可以一键起好几个容器除非你有特殊需求否则别在自己Mac上源码编译。1.2 Homebrew安装Redis的完整流程先确认你的Mac上有没有Homebrew。终端里输入brew --version如果提示命令找不到先装Homebrew这个基础工具没有的话后边什么都做不了。装好Homebrew之后安装Redis本身极其简单brew install redis就这么一条命令。它会自动把Redis的可执行文件放到/usr/local/binApple Silicon上是/opt/homebrew/bin同时把配置文件放到/usr/local/etc/redis.conf。安装完成之后你可以用redis-server --version看一眼版本号确认装成功了。有个细节很多人不知道Homebrew装Redis的时候是不会自动启动服务的也不会把它注册成开机自启项。所以装完之后你还得手动把它拉起来这才算真正跑起来。启动的方式有两种一种是前台直接跑另一种是用Homebrew的services管理后台启动。前台启动最简单redis-server这时候Redis会以前台模式运行终端窗口一关它就停了适合临时测试。如果你希望它一直在后台跑甚至开机自动启动用这个brew services start redis这两条命令的区别本质上就是临时进程和系统服务的区别。开发机上大多推荐用brew services方式省得来回复开关。brew services stop redis可以停止服务brew services restart redis修改过配置以后重启也方便。再啰嗦一句版本的事。Homebrew默认装的是当前稳定版Redis但你如果搜redis下载里面会看到别人提到老版本、RC版本别被带偏。直接用官方稳定版就好那个版本在内存优化、持久化、集群支持方面都已经很成熟了。装完之后在终端里敲redis-cli ping返回PONG就说明服务已经通了。2. 启动、配置与优化Redis服务装好只是第一步真正打开Redis的正确方式是把配置搞清楚。很多人装完Redis就直接用了什么参数都没改这在开发环境确实能跑但一旦你把Redis用到生产级场景比如做缓存治理、做分布式锁、做消息队列配置不当会有一堆潜在问题。下面讲的都是我在实际使用中反复调过的参数也是面试和运维里最常被问的东西。2.1 服务启动与开机自启前面讲了brew services start redis这里把细节补完整。很多人装完Redis之后用redis-server跑了一下能ping通就以为完事了结果第二天重启电脑再连接报错就开始慌。原因很简单前台启动的进程在你关终端的时候就被杀掉了根本没注册成后台服务。brew services start redis这个命令做的事是让Redis以后台守护进程的方式运行并且配置为开机自启。你可以用brew services list查看当前服务状态会看到redis这一行标记为started。如果你装的是最新版Redis其实配置文件里默认就有一行daemonize no意思是不要以守护进程方式运行。但用brew services启动的时候Homebrew会帮你以守护方式管理它所以不需要手动把这个参数改成yes。这里很容易混淆我踩过这个坑后来才想明白daemonize这个参数只在手动执行redis-server时才有意义。还有一个常见的是端口问题。Redis默认监听6379端口不打算改的话就直接用。但如果你同机器上跑了好几套Redis实例那就需要改配置文件里的port参数。Homebrew的配置路径一般是/usr/local/etc/redis.confIntel Mac或/opt/homebrew/etc/redis.confApple Silicon找到那一行改掉再重启服务就行。使用redis-cli -p 端口号可以指定端口连接比如redis-cli -p 6380。这在你管理多实例的时候非常有用切记。2.2 核心配置项详解与实战参数配置文件里的参数我挑几个实操中最常用的给你拆解。maxmemory这个参数决定了Redis最多能使用多少内存。不设置的话Redis会一直用内存直到系统内存耗尽这在开发环境无所谓但是在缓存场景下就很危险。设置之后配合maxmemory-policy一起来用当内存达到上限时Redis会根据你指定的策略自动淘汰旧数据。常见的策略有allkeys-lru所有键按最近最少使用淘汰、volatile-lru只淘汰设置了过期时间的键、noeviction不淘汰直接报错。做缓存治理的时候我基本都用allkeys-lru这个策略简单有效。appendonly和appendfsync这两个参数跟你数据的持久化相关。appendonly yes开启AOF持久化把每次写操作都记录到日志文件里这样即使Redis意外宕机重启后也能从日志恢复数据。appendfsync有三个取值always、everysec、no分别表示每次都同步、每秒同步一次、交给系统决定。生产环境下大家一般选everysec性能和数据安全之间最平衡。bind和protected-mode这两个参数要特别小心。默认配置里Redis只监听本地回环地址127.0.0.1外网访问不了这是为了防止Redis被未授权访问。如果你只是本机开发用千万别把bind改成0.0.0.0更不要把protected-mode改成no。Redis默认不带密码一旦暴露到公网等于把数据裸奔给全世界。真要让别的机器访问正确的做法是同时设置密码在配置里加上requirepass这一行。我见过太多人图方便把这些安全配置全关了最后Redis成了别人的肉鸡。这不是危言耸听公网上扫描Redis默认端口的脚本比比皆是。3. 玩转Redis连接与可视化工具命令行用redis-cli确实够酷但真要看缓存内容、查key、看内存的时候黑底白字的界面效率太低了。这里就轮到可视化工具出场。市面上的Redis连接工具也不少我挑两个最主流、也最常被问到的来说。还有一个特别容易踩的坑就是Windows下用Redis很多人搭了开发环境才发现官方根本不发布Windows版本。3.1 Redis Desktop Manager与Another Redis Desktop Manager说到Redis可视化客户端最先被提到的多半是Redis Desktop Manager。这个工具界面成熟能直连Redis能看key列表、能执行命令还有内存分析功能。但它有一个敏感的地方——它的正式版是收费的社区版功能比较有限。后来社区里出了一个替代品叫Another Redis Desktop Manager光看名字就懂它的定位了。它是一个开源免费的Redis桌面客户端功能相当齐全我个人用下来最大的感受是启动速度快支持连接多台Redis服务器也能通过SSH隧道连接远程Redis。如果你是后端开发、平时要频繁调试缓存这个工具够用了。这两个工具在macOS上都能直接下载安装包也可以借助Homebrew安装具体在安装包里双击拖拽就行。装好之后填本机地址127.0.0.1:6379不用填密码就能连上前提是你没设requirepass。个人习惯是这样的命令行工具redis-cli负责快速执行命令Another Redis Desktop Manager这类可视化工具负责浏览数据和排查问题。两者配合起来日常开发效率提升非常明显。3.2 Windows版Redis与跨平台对比这个坑我必须要讲因为它发生在太多人身上。你现在用的是macOS但跟你协作的同事可能用的是Windows。他们搜windows版本redis结果找不到官方Windows二进制包然后在GitHub上找微软维护的旧版Redis仓库或者去第三方网站下载装完版本老旧不说还有安全风险。为什么Redis没有官方Windows版本因为Redis本身是面向Linux/Unix环境设计的利用了fork等Unix特性Windows实现起来要么性能差、要么兼容性麻烦。所以Windows上常见的方案是用WSL跑Linux发行版再装Redis或者用Docker Desktop拉Redis镜像。要是有人告诉你在Windows上直接双击某个exe就是官方Redis那多半是误解了对应到macOS上你也会搜到一堆macos镜像之类误导信息其实你的Mac装Redis根本不需要下什么ISO镜像一条brew命令全搞定。这也是为什么我总是建议大家用Docker方案做开发环境的统一Windows配Docker DesktopmacOS配Docker DesktopLinux配Docker Engine三端拉同一个Redis镜像行为完全一致不会再出现我这能跑你那跑不了的问题。4. Redis核心数据类型与业务场景Redis不是简单的缓存工具。很多人只知道它存key-value但其实它的核心价值在于丰富的数据结构。这些数据结构能帮你解决非常多业务问题从缓存治理到分布式锁从排行榜到消息队列背后全靠它。4.1 五种基础数据类型速览Redis有五种最基础的数据类型面试题里必考。我给它们都配一个真实使用场景这样你理解起来不用死记硬背。**String字符串**最常用缓存、计数器、分布式session都用它。比如做接口幂等用SET key value NX EX 60这种原子操作正好能用来实现分布式锁的基础逻辑。底层命令看起来简单但它就是值存储的基石。**List列表**是双向链表适合做消息队列、最新文章列表。用LPUSH往左边推数据RPOP从右边取数据天然实现先进先出。**Hash哈希**适合存储对象比如用户信息、商品信息。一个key对应一个field-value集合比把整个对象塞进String要灵活得多还能单独对字段做更新。**Set集合**是无序去重集合天然适合做标签系统、关注关系。比如计算共同好友直接用SINTER命令对两个集合做交集一行命令出结果。**ZSet有序集合**在Set基础上加了score适合做排行榜、延时队列。按分数排序这些操作Redis内部已经帮你做完了。理解这些数据类型之后你会发现很多业务代码根本不需要拉着数据库反复操作一个Redis命令就能搞定。这也是Redis能做中间件的原因——它不只是缓存层还能帮业务扛住高并发读写。4.2 缓存治理与分布式锁实战很多人做缓存就是把数据塞Redis里过期时间随便设置。真正做缓存治理要考虑缓存穿透、缓存击穿、缓存雪崩三种问题。缓存穿透是指查一个根本不存在的数据请求直接打到数据库上。可以加缓存空值来缓解也可以把布隆过滤器放到Redis前面。缓存击穿是指某个热点key过期的瞬间大量请求同时打到数据库。缓存雪崩则是大量key同时过期造成数据库瞬间压力过大解决思路是过期时间加随机抖动避免同一时刻大规模失效。分布式锁这块Redis的SET key value NX EX命令是经典方案。NX表示只有key不存在时才能设置成功EX设置过期时间防止死锁。伪代码如下# 加锁 SET lock_key unique_value NX EX 30 # 释放锁 if GET lock_key unique_value then DEL lock_key释放锁务必用Lua脚本保证原子性否则先GET再DEL中间被其他线程插一脚就出问题。这里要注意分布式锁的key不能随便命名得带业务前缀比如order:pay:12345不然不同业务互相覆盖。锁的过期时间还需要评估业务最长执行时间设得太短锁自动释放了设得太长又可能出现手动释放误删别人锁的问题。我做过的最笨的方法是预估正常耗时再加一倍作为兜底但前提是业务逻辑里不能有无限等待的循环。Redis还衍生出很多高级用法比如发布订阅做实时消息推送、使用Stream实现消息队列但那些都属于进阶内容了先把缓存和锁这两块吃透日常工作就够用了。5. 常见问题排查与避坑实录这里整理大家在macOS上装Redis、用Redis时最容易踩的坑。很多问题看起来千奇百怪其实排查思路大同小异。5.1 端口占用与连接超时端口被占用是最常见的问题。你明明启动了Redis但redis-cli连不上报错连接失败。原因大概率是6379端口被其他进程占了。用lsof -i :6379看一眼是哪个进程在监听如果是自己的另一个Redis实例在跑把旧的停了就行如果是别的服务占了端口就得改Redis的端口号或者在配置文件里换成6380。另一个高频问题是redis command timed out这类的连接超时错误。这个报错经常出现在Java项目里特别是使用Spring Data Redis配合Lettuce客户端时。本质上就是客户端跟Redis服务端建立连接时网络超时了。排查方向包括确认服务端是否在运行、确认6379端口是否开放、确认本机防火墙设置、确认Redis的bind配置是否允许连接来源。如果是本地开发直接把Redis跑在默认配置上地址连127.0.0.1TCP连接超时极少发生。连接超时还有一个隐藏原因是网络代理。有些Mac用户会在系统里配置代理结果本机回环流量也被代理转发导致连接Redis时被代理拦截或拖慢。遇到诡异的连接问题试试关掉代理再连。5.2 Docker安装Redis主从的注意点用Docker跑Redis主从复制是大家很喜欢尝试的方案。一条命令就能拉一个Redis镜像docker run -d -p 6379:6379 redis。但如果你还要配主从有几个坑得知道。第一个坑是配置文件的挂载。Redis镜像默认没有配置文件你需要先自己准备一个redis.conf然后用-v参数挂载到容器里。挂载的时候文件权限和路径要仔细挂载错了容器直接起不来用docker logs能看到报错信息。第二个坑是容器之间的网络互通。搭建主从的时候从节点要能访问主节点。直接跑多个容器时容器名和IP地址都会变简单做法是用--network让它们在同一个自定义网络里。第三个坑是数据和日志持久化。容器一旦删除里面的数据全没了。生产环境至少要把持久化目录挂载到宿主机上-v参数指定volume。日志同理。我还遇到过docker search redis报500错误的情况报错信息里提到Docker Desktop的API route之类多半是Docker Desktop本身状态不对重启Docker Desktop就能恢复。这个报错和Redis本身没关系但很容易让人误以为镜像源有问题白白折腾半天。5.3 配置文件修改后不生效这个坑我印象特别深刻修改了/usr/local/etc/redis.conf里的参数重启服务居然还是旧配置在跑。后来发现原因很简单我用redis-server手动启动的时候它默认读取的配置路径不是Homebrew存放配置文件的路径而是它自己约定的默认路径。如果你手动执行redis-server大概率会直接跳过你的自定义配置。正确的做法是如果改了配置就用brew services restart redis重启服务确保走的是Homebrew服务的配置路径。或者明确用参数指定配置文件redis-server /usr/local/etc/redis.conf。这两个方式选一个别两个混着用混用以后你会搞不清当前实例到底用没用到你的配置。检查当前运行实例实际加载的配置最可靠的方法是在终端里执行redis-cli CONFIG GET *它会列出Redis当前生效的全部配置项和配置文件对照一下就知道改没改上了。6. 几个能提升效率的进阶习惯前面讲的都是基础安装和避坑最后聊几个我自己用久了才悟出来的习惯属于那种知道的人不会专门写文章告诉你但知道了确实很香的细节。第一给Redis配置一个独立的命令行别名。在~/.zshrc里加一行alias redis-localredis-cli -h 127.0.0.1 -p 6379这样你每次连本地Redis不用敲一大串连接参数敲一个简短的别名就能进入交互式命令行。如果你还经常连不同的Redis环境还可以用不同的别名区分比如redis-dev、redis-prod省心很多。第二熟练使用INFO命令看内存、连接数、命中率。很多人排查问题只会用GET和KEYS其实绝大多数性能问题都能从INFO的输出里看出来。比如keyspace_hits和keyspace_misses这两个值算一下就能知道缓存命中率。内存部分的used_memory_human字段一眼看出缓存数据量有没有异常。connected_clients反映当前有多少个客户端在连接数字异常飙升大概率意味着哪里在疯狂抢Redis。第三如果要研究Redis数据结构、内部机制别只盯着教程看大胆地在本地用DEBUG OBJECT、MEMORY USAGE这类排查命令去观察实际数据。拿一台开发机反复折腾不会出大事年轻时多踩几个坑到生产环境才能少踩坑。第四很多人搜macos上班摸鱼神器之类的热词然后想在Mac上装各种各样的工具其实Redis也能算半个效率神器——你把它当成一个随手可用的中间件实验场想测什么新思路、新数据结构直接本地起一个实例比在服务器上折腾快太多了。开发机上有个Redis就像办公桌上有个顺手好用的计算器用到的时候马上就省力。最后再补一个我个人非常推荐的组合macOS Homebrew安装Redis Another Redis Desktop Manager做可视化入口 命令行redis-cli做精细控制再根据需求用Docker起临时主从集群做方案验证。这套组合覆盖了从本地开发到方案验证的大部分场景既能玩单机也能练集群思路足够应付日常和后端方向的进阶学习了。
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑