Redis 总结

Redis 简介

Redis 是一种典型的基于键值对的 NoSQL 数据库,使用 C 语言实现,数据主要存放在内存中,因此读写速度非常快。它非常适合作为缓存层使用,尤其适合存放访问频率高、更新频率低的数据,例如热点配置、会话信息、商品详情等。需要注意的是,Redis 不能完全替代关系型数据库,它更适合高性能缓存和消息队列等场景。

Redis 数据流转总览

Redis 持久化

Redis 主要有两种持久化方式:

  • RDB(快照方式)

    • 默认的持久化策略。
    • Redis 会在指定时间间隔内,将内存中的数据写入一个二进制快照文件,默认文件名为 dump.rdb
    • 可以使用 SAVEBGSAVE 触发快照。
    • 如果 Redis 崩溃,可能丢失最后一次快照之后发生的修改。
  • AOF(日志追加方式)

    • 记录 Redis 执行的写命令,并以日志形式追加到文件中。
    • 更适合数据恢复和较完整的数据保留。
    • 但相对 RDB 来说,写入成本更高,性能也通常略低。

Redis 作为缓存时,通常更关注高性能,因此很多场景会选择 RDB 或混合使用 AOF + RDB。

Redis 安装

  • 安装 gcc,用于编译 Redis
1
2
sudo yum install gcc c++
sudo apt-get install gcc c++
  • 解压 Redis 软件包(以 5.0.7 为例)
1
sudo tar -zxvf redis-5.0.7.tar.gz -C /opt
  • 编译并安装
1
2
cd /opt/redis-5.0.7/src
sudo make install PREFIX=/opt/redis

说明:PREFIX=/opt/redis 表示将 Redis 安装到 /opt/redis 目录。如果报错,可尝试加上 MALLOC=libc 参数。

  • 配置守护进程(后台运行)
1
sudo cp ../../redis-5.0.7/redis.conf /opt/redis/bin/

修改配置文件中的 daemonize nodaemonize yes

1
sudo vim redis.conf

redis 安装

  • 设置密码

修改 requirepass 的值即可设置密码:

1
sudo vim redis.conf

redis 安装

  • 启动 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 主从配置

为了减轻 Redis 的访问压力,可以实施主从复制,形成读写分离,从而降低主节点负载。一个 master 可以对应多个 slave,但一个 slave 只能对应一个 master。其中 master 支持读写,slave 一般只支持读操作。下面以单机伪集群为例说明:多个 Redis 实例使用不同端口。

配置步骤:

  • 复制 slave 服务
1
cp -r /opt/redis/bin ../redis-c1
  • 修改从节点配置文件
1
vim redis.conf

port 修改为新的端口,例如 3545,并在 replicaof 中指定主节点 IP 和端口;如果主节点启用了密码,还需要设置 masterauth

redis 主从配置

  • 启动从服务器
1
./redis-server redis.conf
  • 验证配置是否生效
1
2
3
./redis-cli -p 3545
./redis-cli -p 7000
INFO

如下图所示,可通过 INFO 命令观察主从复制状态:

redis 主从配置

redis 主从配置

Jedis API 使用

  • Maven 依赖:
1
2
3
4
5
6
7
<dependencies>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.1.0</version>
</dependency>
</dependencies>
  • 使用示例:

jedis api 使用

总结

Redis 的核心价值在于高性能读写和数据缓存能力,尤其适合热点数据缓存、会话管理和分布式计数等场景。掌握其持久化、主从复制和客户端 API 的基础用法后,才能更稳妥地在项目中使用它。