mac redis(手把手讲解)
💡一则或许对你有用的小广告
欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论
- 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于
Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...
,点击查看项目介绍 ;演示链接: http://116.62.199.48:7070 ;- 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;
截止目前, 星球 内专栏累计输出 90w+ 字,讲解图 3441+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 3100+ 小伙伴加入学习 ,欢迎点击围观
前言
在现代互联网开发中,Redis 作为一种高性能的内存数据库,凭借其灵活的数据结构和快速的读写能力,已成为开发者工具链中的重要一环。对于使用 Mac 系统的开发者而言,无论是本地开发环境搭建、调试缓存逻辑,还是进行性能测试,掌握 mac Redis 的安装、配置与使用技巧都至关重要。本文将从零开始,以循序渐进的方式讲解如何在 Mac 环境下高效利用 Redis,并通过实际案例和代码示例帮助读者快速上手。
安装与配置
2.1 安装 Redis
在 Mac 上安装 Redis 最简单的方式是通过 Homebrew 包管理器。打开终端并执行以下命令:
brew install redis
安装完成后,可以通过以下命令启动 Redis 服务:
redis-server
此时,Redis 默认会在 6379
端口运行。若需验证安装是否成功,可以通过客户端连接:
redis-cli ping
若返回 PONG
,则表示 Redis 已正常运行。
2.2 配置 Redis
默认配置下,Redis 的监听地址为 127.0.0.1
,端口为 6379
。为了安全性和灵活性,建议修改配置文件。配置文件路径通常为 /usr/local/etc/redis.conf
。以下是常见配置项的调整示例:
修改监听地址与端口
bind 0.0.0.0 # 允许远程连接
port 6380 # 修改默认端口(可选)
启用密码验证
requirepass your_secure_password # 设置访问密码
修改完成后,重启 Redis 服务使配置生效:
redis-server /usr/local/etc/redis.conf
Redis 基础命令与数据类型
3.1 基础操作命令
连接与验证
通过 redis-cli
连接 Redis 服务:
redis-cli -h 127.0.0.1 -p 6379 -a your_secure_password
常用命令示例
命令 | 作用 |
---|---|
SET key value | 存储键值对 |
GET key | 获取键对应的值 |
DEL key | 删除指定键 |
EXPIRE key 30 | 设置键的过期时间为 30 秒 |
示例代码:
127.0.0.1:6379> SET username "john_doe"
OK
127.0.0.1:6379> GET username
"john_doe"
3.2 数据类型详解
Redis 支持多种数据类型,每种类型对应不同的使用场景。以下通过比喻和代码示例说明:
3.2.1 字符串(String)
比喻:字符串是 Redis 的“基础积木”,适合存储简单键值对,如用户 ID、计数器等。
SET counter 0
INCR counter # 将 counter 值加 1
3.2.2 哈希(Hash)
比喻:哈希像一个“对象容器”,适合存储对象的多个字段。例如,存储用户信息:
HSET user:123 name "Alice" age 30
HGETALL user:123
3.2.3 列表(List)
比喻:列表是一个“队列/栈”,支持在两端快速插入和弹出元素。例如,实现消息队列:
LPUSH messages "Hello" # 左侧插入
RPUSH messages "World" # 右侧插入
LRANGE messages 0 -1 # 获取所有元素
3.2.4 集合(Set)
比喻:集合是“无序且唯一”的元素集合,适合去重操作。例如,记录用户点赞的文章:
SADD articles 1001 1002 1003
SCARD articles # 返回集合元素数量
3.2.5 有序集合(Sorted Set)
比喻:有序集合是带“分数”权重的集合,适合排行榜等场景。例如,记录用户积分:
ZADD scores 85 Alice 90 Bob # 分数为键,用户为值
ZRANGE scores 0 -1 BYSCORE # 按分数排序
持久化与性能优化
4.1 Redis 持久化机制
Redis 的数据默认存储在内存中,若服务器宕机,数据可能丢失。因此,需通过 持久化 将内存数据写入磁盘。
4.1.1 RDB(快照持久化)
RDB 是通过定时生成数据库快照文件(.rdb
)实现的。配置示例:
save 900 1 # 每 900 秒(15 分钟)若至少有 1 个键变更则触发保存
save 300 10 # 每 300 秒(5 分钟)若至少有 10 个键变更则触发保存
4.1.2 AOF(追加文件持久化)
AOF 将每个写操作记录到日志文件(.aof
)中,恢复时重新执行命令。配置示例:
appendonly yes # 启用 AOF
appendfsync everysec # 每秒同步一次(平衡性能与安全性)
4.2 性能优化策略
4.2.1 内存优化
通过 maxmemory
参数限制 Redis 内存使用量,并配置淘汰策略:
maxmemory 256mb # 最大内存 256MB
maxmemory-policy allkeys-lru # 使用 LRU 算法淘汰未使用的键
4.2.2 连接池复用
在编程语言客户端(如 Python)中,使用连接池避免频繁创建连接:
import redis
pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
r = redis.Redis(connection_pool=pool)
常见问题与解决方案
5.1 端口占用或连接失败
若启动 Redis 时提示端口占用,可通过以下命令查找并终止进程:
lsof -i :6379 # 查看占用 6379 端口的进程
kill -9 <PID> # 终止进程(替换 <PID> 为实际进程号)
5.2 密码验证失败
若配置了密码但连接时提示 NOAUTH
,需检查:
- 客户端是否通过
-a
参数传递密码; - 配置文件中的
requirepass
是否拼写正确。
5.3 数据过大导致内存溢出
若内存不足,可尝试:
- 使用淘汰策略(如
allkeys-lru
)自动清理旧数据; - 将冷数据迁移到磁盘数据库(如 MySQL);
- 增加物理内存或使用 Redis 集群分片。
结论
通过本文,读者已掌握了在 Mac 环境下从安装、配置到高级功能的全流程操作。mac Redis 不仅是本地开发的得力工具,也为分布式系统设计提供了重要支持。建议读者通过实际项目(如缓存 API 响应、实现排行榜)进一步巩固所学知识。未来,随着对 Redis 事务、Lua 脚本等高级功能的探索,开发者将能更充分地释放其性能潜力。
(全文约 1800 字)