WordPress网站Redis配置指南,Redis Cache Pro(Object Cache Pro)插件安装使用教程
文章目录
redis是什么?
Redis (REmote DIctionary Server) 是一个开源的、高性能的键值(key-value)存储系统。它最初由Salvatore Sanfilippo开发,并在2009年发布。Redis提供了数据结构服务器的功能,可以用来存储各种类型的数据结构,如字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets),以及更复杂的数据结构如位图(bitmaps)、超日志(hyperloglogs)和地理空间索引(geospatial indexes)等。
Redis的特点包括:
- 内存存储:数据主要存储在内存中,这使得Redis能够提供非常快的数据访问速度。
- 持久化:尽管Redis主要是一个内存数据库,但它也支持两种形式的数据持久化:RDB(Redis Database Backup)快照和AOF(Append Only File)日志记录。
- 网络透明性:客户端可以通过TCP或UNIX socket与Redis服务器通信。
- Pub/Sub模型:Redis支持发布/订阅模式,允许消息的广播和接收。
- 数据复制:支持主从复制和故障转移。
- Lua脚本支持:内置Lua引擎,可以执行原子性的脚本操作。
- 事务:支持事务,可以保证一系列命令的原子性执行。
Redis广泛应用于缓存、消息队列、实时数据分析等多种场景。由于其灵活性和高性能特性,它成为了许多现代应用架构中的重要组成部分。
redis为什么快?
Redis之所以能够提供极快的性能,主要是因为它采用了多种技术和设计原则。以下是一些关键因素:
- 内存存储:
- Redis将所有数据存储在内存中,这意味着读写操作可以直接在RAM中进行,而不需要访问磁盘。内存访问速度远远高于磁盘访问速度,这是Redis高速响应的基础。
- 单线程模型:
- Redis使用单线程模型处理客户端请求。这意味着在一个给定的时间点,只有一个客户端请求正在被处理。这简化了并发控制,因为不需要复杂的锁机制来保证数据一致性。
- 单线程模型还可以避免多线程环境中的上下文切换和锁的竞争开销。
- 高效的内存管理:
- Redis使用专门的内存分配器(如jemalloc)来有效地管理内存,减少内存碎片并提高内存使用效率。
- 事件驱动架构:
- Redis使用事件驱动模型来处理I/O操作。它通过一个事件循环监听多个套接字,当有客户端请求到达时,事件循环将这些请求加入队列并依次处理。
- 非阻塞I/O:
- Redis利用非阻塞I/O多路复用技术(如epoll或kqueue)来同时监听多个客户端连接。这样可以在等待I/O操作的同时继续处理其他任务。
- 优化的数据结构:
- Redis内置了多种高效的数据结构,这些数据结构在内存中进行了优化,以支持快速的数据访问和修改操作。
- 比如,使用跳跃表(skip lists)来实现有序集合,使用压缩列表(ziplist)来节省空间等。
- 命令的原子性:
- Redis中的大多数命令都是原子性的,这意味着它们在执行过程中不会被打断。这减少了并发控制的复杂性,并有助于保持高性能。
- 异步持久化:
- Redis支持异步持久化机制,如RDB快照和AOF日志,这些操作不会阻塞主线程,从而不会影响性能。
根据一些资料,Redis可以达到每秒处理几万到几十万次读写操作的能力,具体取决于硬件配置和工作负载。
需要注意的是,虽然Redis非常快,但它也有一些局限性,比如内存容量限制。因此,在部署和使用Redis时需要考虑这些因素。
wordpress网站什么情况下合适使用redis来提升速度?
WordPress 网站使用 Redis 来提升速度通常适用于以下几种情况:
- 高流量网站:
- 对于访问量较大的网站,使用 Redis 可以显著减轻数据库的压力,并提高页面加载速度。这是因为 Redis 作为内存中的数据存储,可以非常快地处理请求,减少对较慢的磁盘 I/O 的依赖。
- 动态内容:
- 如果你的网站包含大量动态内容,每次请求都需要从数据库中获取数据,那么使用 Redis 进行对象缓存可以大幅减少数据库查询次数,提高网站性能。
- 多服务器环境:
- 在使用负载均衡或多服务器架构的情况下,Redis 可以作为一个统一的缓存层,确保所有服务器都能访问相同的缓存数据,这对于会话管理尤其有用。
- 频繁更新的内容:
- 如果你的网站经常更新内容,例如新闻站点或社交平台,Redis 可以帮助缓存这些频繁变化的数据,减少数据库负担。
- 需要高级缓存策略的应用:
- Redis 支持多种数据结构,如列表、集合、有序集合等,可以实现更复杂的缓存策略和数据处理逻辑。
- 资源受限的服务器:
- 如果你的服务器资源有限,使用 Redis 可以更高效地利用内存资源,因为它是基于内存的存储,可以快速响应请求。
- 需要快速响应的应用:
- 对于那些需要快速响应时间的应用,Redis 可以显著提高首屏加载速度,改善用户体验。
wordpress网站如何配置redis加速?
①在服务器上安装 Redis 服务
以宝塔面板为例,给服务器安装Redis服务很简单,到“软件商店-运行环境”找到Redis,或者直接搜索Redis,然后安装即可。
②安装 PHP 的 Redis 扩展
以宝塔面板为例,给PHP安装Redis拓展也很简单,找到你网站使用的PHP版本,然后点击设置-安装拓展,安装redis即可。
③在 WordPress 中安装一个支持 Redis 的缓存插件
本站推荐使用Redis Cache Pro(Object Cache Pro)插件,GPL版本自带任意60位密码即可激活。Redis Cache Pro(Object Cache Pro)插件可点击下面链接:
Redis Cache Pro(Object Cache Pro)插件安装使用教程
服务器配置好Redis服务,PHP安装redis拓展之后,然后安装Redis Cache Pro(Object Cache Pro)插件,安装启用后如下图所示,此时Enable Cache按钮是无法点击的,需要进行下一步设置才能使用。
基本配置
define(‘WP_REDIS_CONFIG’, [
‘token’ => ‘ndHoi8hn6wZmLUb8OnalsjEd8v8doxMR01vXYIJ6cn7EZjVZ3UulNJuqANaJ’,
‘host’ => ‘127.0.0.1’,
‘port’ => 6379,
‘database’ => 0, // change for each site
‘maxttl’ => 3600 * 24 * 7, // 7 days
‘timeout’ => 1.0,
‘read_timeout’ => 1.0,
‘split_alloptions’ => true,
‘debug’ => false,
]);define(‘WP_REDIS_DISABLED’, false);
这是一个适用于大多数站点的简单配置,可以在大多数情况下提供可观的性能改善。以下是每个参数的解释:
‘token’ :激活码。在本站下载插件是GPL“破解版”,你只需输入60位任意字符串即可激活;
‘host’ => ‘127.0.0.1’:Redis服务器的主机地址。
‘port’ => 6379:Redis服务器的端口号。
‘database’ => 0:为每个站点更改数据库编号,以避免在多个站点上使用相同的数据库。
‘maxttl’ => 3600 * 24 * 7:对象的最大过期时间,这里设置为7天。根据你的需求进行调整。
‘timeout’ => 1.0 和 ‘read_timeout’ => 1.0:连接Redis服务器的超时时间。
‘split_alloptions’ => true:alloptions 键是否应该存储为散列。如果你的站点有大量的选项(如 WooCommerce、Elementor 等),启用此选项可能会提高性能。
‘debug’ => false:在生产环境中应将调试关闭,以避免暴露敏感信息。
最后,’WP_REDIS_DISABLED’, false 确保Redis缓存是启用的。如果需要临时禁用Redis缓存,你可以将其设置为 true。
高性能配置:
define(‘WP_REDIS_CONFIG’, [
‘token’ => ‘your-license-token’,
‘host’ => ‘127.0.0.1’,
‘port’ => 6379,
‘database’ => 0, // 针对每个站点进行更改
‘timeout’ => 0.5,
‘read_timeout’ => 0.5,
‘retry_interval’ => 100,
‘retries’ => 3,
‘backoff’ => ‘smart’,
‘compression’ => ‘zstd’, // `zstd` 压缩更小,`lz4` 压缩更快
‘serializer’ => ‘igbinary’,
‘async_flush’ => true,
‘split_alloptions’ => true,
‘prefetch’ => true,
‘strict’ => true,
‘debug’ => false,
‘save_commands’ => false,
]);define(‘WP_REDIS_DISABLED’, getenv(‘WP_REDIS_DISABLED’) ?: false);
‘host’ => ‘127.0.0.1’:Redis服务器的主机地址。
‘port’ => 6379:Redis服务器的端口号。
‘database’ => 0:为每个站点更改数据库编号,以避免在多个站点上使用相同的数据库。
‘timeout’ => 0.5 和 ‘read_timeout’ => 0.5:连接Redis服务器的超时时间。
‘retry_interval’ => 10 和 ‘retries’ => 3:在连接失败时的重试设置。retry_interval 是重试间隔,单位毫秒;retries 是重试次数。
‘backoff’ => ‘smart’:使用智能退避策略,更有效地重试连接。
‘compression’ => ‘zstd’:选择压缩算法,如网站数据量较大,启用 zstd 可提供更高的压缩率。
‘serializer’ => ‘igbinary’:选择序列化器,igbinary 通常比PHP默认的 serialize 更高效。
‘async_flush’ => true:启用异步刷新以提高性能。
‘split_alloptions’ => true:如果你的站点有大量的选项,启用此选项可能会提高性能。
‘prefetch’ => true:启用预取以提高性能。
‘strict’ => true:启用严格模式以确保 Redis 插件与 WordPress 的预期行为一致。
‘debug’ => false:在生产环境中应将调试关闭,以避免暴露敏感信息。
‘save_commands’ => false:将此选项设置为 false 可以避免在Redis中保存写入命令。
Object Cache Pro 插件数据统计视图解读
Requests (请求)
- Cached Hits: 显示已经被 Redis 缓存并直接从缓存中返回的请求数量。
- Uncached Hits: 显示由于某些原因未能从缓存中返回而必须从数据源获取的请求数量。
- Misses: 显示因缓存中不存在而未能直接返回的请求数量。
- Hits-to-Misses Ratio: 显示缓存命中数与未命中数的比例。这个比率越高,说明缓存的效果越好。
Redis:Requests (Redis 请求)
- Successful Key Lookups: 显示成功从 Redis 中查找键的次数。
- Failed Key Lookups: 显示尝试查找但未能找到对应键的次数。
- Hits-to-Misses Ratio: 显示 Redis 键查找中的命中与未命中的比率。高比率通常表明 Redis 缓存效果良好。
Commands (命令)
- Cache Reads: 显示从 Redis 缓存读取数据的次数。
- Datastore Writes: 显示写入数据存储(通常是数据库)的次数。这通常发生在缓存过期或数据更新时。
- Datastore Reads: 显示从数据存储读取数据的次数。
- Cache Writes: 显示写入 Redis 缓存的次数。
Response Times (响应时间)
- WordPress Render Time: 显示 WordPress 渲染页面所需的平均时间(毫秒)。
- Datastore Response Time: 显示等待数据存储响应的平均时间(毫秒)。
Redis:Memory (Redis 内存)
- Memory Allocated: 显示 Redis 当前分配的内存量。
- Used Memory: 显示 Redis 已使用的内存量。
- Memory Ratio: 显示 Redis 分配的内存与其最大可分配内存之间的比率。这有助于监控 Redis 的内存使用情况。
Datastore Command Time (数据存储命令时间)
- Average Time Waiting for Datastore Response: 显示等待数据存储响应的平均时间(毫秒)。这有助于评估数据存储的性能。
Redis:Throughput (Redis 吞吐量)
- Commands Processed per Second: 显示每秒钟 Redis 处理的命令数量。高吞吐量通常表明 Redis 服务器正在高效地处理请求。
通过监控这些图表,你可以更好地理解 WordPress 站点与 Redis 缓存之间的交互,识别潜在的性能瓶颈,并采取措施进行优化。