缓存
将 Redis 作为缓存驱动
队列
将 Redis 作为队列驱动
广播
通过 Pub/Sub 实现实时通信
什么是 Redis
Redis 是一款开源的高性能键值存储。 它支持字符串、哈希、列表、集合、有序集合等多种数据结构,因此也被称作数据结构服务器。 Laravel 中 Redis 通常用于以下用途。选择客户端
Laravel 支持两种客户端:PhpRedis(PHP 扩展)和 Predis(PHP 库)。Laravel 13 的默认客户端是 PhpRedis。生产环境推荐使用 PhpRedis。
使用 Laravel Sail 时 PhpRedis 已经预装。
配置
config/database.php
Redis 的配置放在config/database.php 的 redis 数组中。
环境变量
在.env 中配置连接信息。
TLS / SSL 连接
若要使用 TLS 加密,请指定scheme 选项。
集群
以集群方式使用多台 Redis 时使用clusters 键。
options.cluster 为 redis,使用原生的 Redis 集群模式,
它会自动处理故障切换,适合生产环境。
如果使用 Predis 的客户端侧分片,请删除 options.cluster。
但客户端侧分片不处理故障切换,只适合缓存等一次性数据。
Predis 的配置
使用 Predis 需要安装predis/predis 并把 REDIS_CLIENT 改为 predis。
Predis 的重试设置
Predis 3.4.0 及以上版本内置了重试与退避设置。使用max_retries 设置重试次数,retry 设置退避策略。retry 选项接收一个数组,其中键是 NoBackoff、EqualBackoff 或 ExponentialBackoff 的类名。
parameters 选项配置重试。
PhpRedis 的配置
PhpRedis 通过 PECL 安装(Laravel Sail 已预装)。 它还支持以下额外选项:name、persistent、persistent_id、prefix、read_timeout、retry_interval、
max_retries、backoff_algorithm、backoff_base、backoff_cap、timeout、context。
重试与退避设置
用来配置连接失败时的重试行为。 支持的退避算法有:default、decorrelated_jitter、equal_jitter、exponential、uniform、constant。
使用 Unix 套接字
当 Redis 与应用在同一台机器上时,通过 Unix 套接字连接可以减少 TCP 开销。序列化与压缩
PhpRedis 允许配置存储数据的序列化和压缩算法。
支持的压缩算法:
与 Redis 交互
Redis Facade
通过Redis Facade 可以执行任何 Redis 命令。
Facade 通过魔术方法把命令转发给 Redis 服务器。
command 方法显式指定命令名和参数。
多连接切换
可以在config/database.php 中定义多个 Redis 连接,通过 connection() 方法切换。
事务
transaction() 方法封装了 Redis 的 MULTI/EXEC。
闭包中的所有命令会原子地执行。
Lua 脚本
eval() 方法可以原子性地执行 Lua 脚本。
比事务更灵活,脚本内可以引用与更新 Redis 中的值。
KEYS[1]、KEYS[2] 是键名,ARGV[1] 起是附加参数。
管道(Pipeline)
一次性发送大量命令,可减少网络往返。Pub / Sub
Redis 的publish / subscribe 命令可用于通过频道传递消息。
订阅者
subscribe() 是一个长时间运行的过程,通常在 Artisan 命令中调用。
发布者
从其他请求或进程中发送消息。通配符订阅
使用psubscribe() 可以按模式匹配进行订阅。
小结
客户端选择
客户端选择
- 生产环境:PhpRedis(PECL 扩展,性能好)
- 开发环境或不方便安装扩展:Predis(Composer 包)
- Laravel Sail:默认已包含 PhpRedis
连接配置要点
连接配置要点
- 多个 Redis 连接在
config/database.php中按用途分开(default/cache等) - 集群环境使用
clusters键 - 生产环境建议开启 TLS 并配置认证信息
不同操作的使用场景
不同操作的使用场景