Redis 总结

Redis 总结
chifyRedis 简介
Redis 是一种典型的基于键值对的 NoSQL 数据库,使用 C 语言实现,数据主要存放在内存中,因此读写速度非常快。它非常适合作为缓存层使用,尤其适合存放访问频率高、更新频率低的数据,例如热点配置、会话信息、商品详情等。需要注意的是,Redis 不能完全替代关系型数据库,它更适合高性能缓存和消息队列等场景。
Redis 数据流转总览
flowchart LR
A[客户端请求] --> B[Redis Server]
B --> C{是否命中缓存}
C -->|命中| D[直接返回结果]
C -->|未命中| E[查询数据库]
E --> F[写回 Redis]
F --> G[返回客户端]
B --> H[持久化存储 RDB/AOF]
Redis 持久化
Redis 主要有两种持久化方式:
RDB(快照方式)
- 默认的持久化策略。
- Redis 会在指定时间间隔内,将内存中的数据写入一个二进制快照文件,默认文件名为
dump.rdb。 - 可以使用
SAVE或BGSAVE触发快照。 - 如果 Redis 崩溃,可能丢失最后一次快照之后发生的修改。
AOF(日志追加方式)
- 记录 Redis 执行的写命令,并以日志形式追加到文件中。
- 更适合数据恢复和较完整的数据保留。
- 但相对 RDB 来说,写入成本更高,性能也通常略低。
Redis 作为缓存时,通常更关注高性能,因此很多场景会选择 RDB 或混合使用 AOF + RDB。
Redis 安装
- 安装 gcc,用于编译 Redis
1 | sudo yum install gcc c++ |
- 解压 Redis 软件包(以 5.0.7 为例)
1 | sudo tar -zxvf redis-5.0.7.tar.gz -C /opt |
- 编译并安装
1 | cd /opt/redis-5.0.7/src |
说明:
PREFIX=/opt/redis表示将 Redis 安装到/opt/redis目录。如果报错,可尝试加上MALLOC=libc参数。
- 配置守护进程(后台运行)
1 | sudo cp ../../redis-5.0.7/redis.conf /opt/redis/bin/ |
修改配置文件中的 daemonize no 为 daemonize yes:
1 | sudo vim redis.conf |
- 设置密码
修改 requirepass 的值即可设置密码:
1 | sudo vim redis.conf |
- 启动 Redis 服务
1 | ./redis-server redis.conf |
- 连接 Redis
1 | ./redis-cli -h 192.168.139.132 -p 6379 -a password |
参数说明:
-h:主机地址-p:端口号-a:密码
如果 Redis 未设置密码,直接执行
./redis-cli默认会连接6379端口。
- 关闭 Redis 服务
1 | ./redis-cli -h 192.168.139.132 -p 6379 shutdown |
关闭时务必带上
-p参数,否则默认会关闭6379端口。
如果 Redis 不是以 root 用户启动,需要注意 /opt/redis 目录的权限,否则可能无法创建 dump.rdb,进而导致关闭时报错。下图中的 dump.rdb 是由其他用户创建的,而不是 root 用户创建的:
Redis 主从配置
为了减轻 Redis 的访问压力,可以实施主从复制,形成读写分离,从而降低主节点负载。一个 master 可以对应多个 slave,但一个 slave 只能对应一个 master。其中 master 支持读写,slave 一般只支持读操作。下面以单机伪集群为例说明:多个 Redis 实例使用不同端口。
flowchart TD
A[客户端] --> B[Master:6379]
B --> C[Slave:6380]
B --> D[Slave:6381]
B --> E[Slave:6382]
配置步骤:
- 复制 slave 服务
1 | cp -r /opt/redis/bin ../redis-c1 |
- 修改从节点配置文件
1 | vim redis.conf |
将 port 修改为新的端口,例如 3545,并在 replicaof 中指定主节点 IP 和端口;如果主节点启用了密码,还需要设置 masterauth。
- 启动从服务器
1 | ./redis-server redis.conf |
- 验证配置是否生效
1 | ./redis-cli -p 3545 |
如下图所示,可通过 INFO 命令观察主从复制状态:
Jedis API 使用
- Maven 依赖:
1 | <dependencies> |
- 使用示例:
总结
Redis 的核心价值在于高性能读写和数据缓存能力,尤其适合热点数据缓存、会话管理和分布式计数等场景。掌握其持久化、主从复制和客户端 API 的基础用法后,才能更稳妥地在项目中使用它。










