本文最后更新于 2020年08月13日
最近把整个网站的架构都做了调优,现在访问起来是不是比之前快多了,不过还有一个地方没有做优化,今天就着手搭配Redis,加快网站速度
2020.08.06更新
目录
Redis介绍
- Redis是一个开源的高性能的key-value存储系统。具有以下特点:
- 1、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
- 2、Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,sorted set,hash等数据结构的存储。
- 3、Redis支持数据的备份,即master-slave模式的数据备份。
- Redis优势:
- 1、性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
- 2、丰富的数据类型 – Redis支持二进制案例的 String, List, Hash, Set 及 Sorted Set 数据类型操作。
- 3、原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。
- 4、丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性
Redis的部署
我的博客的所有服务都是通过docker部署,所以增加一个redis服务器简直不要太方便
# docker-compose.yml里增加如下内容,注意缩进
redis:
image: redis:alpine
restart: always
volumes:
- redis-data:/data
volumes:
redis-data:
docker-compose up -d
更新即可
WordPress配置文件修改
编辑wp-config.php
,找到define( 'DB_COLLATE', '');
在define( 'DB_COLLATE', '');
后添加如下内容
/** Redis Object Cache */
define( 'WP_REDIS_CLIENT', 'credis' );
define('WP_REDIS_HOST', 'redis');
define('WP_REDIS_DATABASE', '0');
注意一定要在
define( 'DB_COLLATE', '');
后,我一开始也不知道放在哪,导致死活链接不上Redis,网上搜索资料,发现千篇一律,全是一个样,最后在WordPress官方支持论坛里找到了解决方案
https://wordpress.org/support/topic/status-not-connected-2/
define("WP_REDIS_HOST', 'redis');
host填写你的redis地址,因为我是docker compose部署,在yml就定义好,如果你不是的话,把redis
填写为你的Redis服务器地址,端口我没有暴露出来,所以没改
安装Redis Object Cache插件
官方市场里搜索下载即可
Redis Object Cache的配置
如果你照我前面的都配置好了,那么Redis Object Cache打开即用
Redis Object Cache 参数
插件目录下有readme,按照你的需求添加填写到wp-config.php
== Connection Parameters ==
By default the object cache drop-in will connect to Redis over TCP at `127.0.0.1:6379` and select database `0`.
To adjust the connection parameters, define any of the following constants in your `wp-config.php` file.
* `WP_REDIS_CLIENT` (default: _not set_)
Specifies the client used to communicate with Redis. Supports `hhvm`, `pecl` and `predis`.
* `WP_REDIS_SCHEME` (default: `tcp`)
Specifies the protocol used to communicate with an instance of Redis. Internally the client uses the connection class associated to the specified connection scheme. Supports `tcp` (TCP/IP), `unix` (UNIX domain sockets), `tls` (transport layer security) or `http` (HTTP protocol through Webdis).
* `WP_REDIS_HOST` (default: `127.0.0.1`)
IP or hostname of the target server. This is ignored when connecting to Redis using UNIX domain sockets.
* `WP_REDIS_PORT` (default: `6379`)
TCP/IP port of the target server. This is ignored when connecting to Redis using UNIX domain sockets.
* `WP_REDIS_PATH` (default: _not set_)
Path of the UNIX domain socket file used when connecting to Redis using UNIX domain sockets.
* `WP_REDIS_DATABASE` (default: `0`)
Accepts a numeric value that is used to automatically select a logical database with the `SELECT` command.
* `WP_REDIS_PASSWORD` (default: _not set_)
Accepts a value used to authenticate with a Redis server protected by password with the `AUTH` command.
* `WP_REDIS_TIMEOUT` (default: `5`)
Amount of time in seconds (fractions of a second allowed) to attempt initial connection to Redis server before failing.
* `WP_REDIS_READ_TIMEOUT` (default: `5`)
Amount of time in seconds (fractions of a second allowed) to attempt a read from the Redis server before failing.
* `WP_REDIS_RETRY_INTERVAL` (default: _not set_)
Amount of time in milliseconds to retry a failed connection attempt.
== Configuration Parameters ==
To adjust the configuration, define any of the following constants in your `wp-config.php` file.
* `WP_CACHE_KEY_SALT` (default: _not set_)
Set the prefix for all cache keys. Useful in setups where multiple installs share a common `wp-config.php` or `$table_prefix` to guarantee uniqueness of cache keys.
* `WP_REDIS_SELECTIVE_FLUSH` (default: _not set_)
If set to `true`, flushing the cache will only delete keys that are prefixed with `WP_CACHE_KEY_SALT` (instead of emptying the entire Redis database). The selective flush is an atomic `O(n)` operation.
* `WP_REDIS_MAXTTL` (default: _not set_)
Set maximum time-to-live (in seconds) for cache keys with an expiration time of `0`.
* `WP_REDIS_GLOBAL_GROUPS` (default: `['blog-details', 'blog-id-cache', 'blog-lookup', 'global-posts', 'networks', 'rss', 'sites', 'site-details', 'site-lookup', 'site-options', 'site-transient', 'users', 'useremail', 'userlogins', 'usermeta', 'user_meta', 'userslugs']`)
Set the list of network-wide cache groups that should not be prefixed with the blog-id _(Multisite only)_.
* `WP_REDIS_IGNORED_GROUPS` (default: `['counts', 'plugins']`)
Set the cache groups that should not be cached in Redis.
* `WP_REDIS_UNFLUSHABLE_GROUPS` (default: _not set_)
Set groups not being flushed during a selective cache flush.
* `WP_REDIS_DISABLED` (default: _not set_)
Set to `true` to disable the object cache at runtime.
* `WP_REDIS_GRACEFUL` (default: _not set_)
Set to `false` to disable graceful failures and throw exceptions.
* `WP_REDIS_SERIALIZER` (default: _not set_)
Use PhpRedis’ built-in serializers. Supported values are `Redis::SERIALIZER_PHP` and `Redis::SERIALIZER_IGBINARY`.
* `WP_REDIS_IGBINARY` (default: _not set_)
Set to `true` to enable the [igbinary](https://github.com/igbinary/igbinary) serializer. Ignored when `WP_REDIS_SERIALIZER` is set.
* `WP_REDIS_DISABLE_BANNERS` (default: _not set_)
Set to `true` to disable promotions for [Redis Cache Pro](https://wprediscache.com/).
== Replication & Clustering ==
To use Replication, Sharding or Clustering, make sure your server is running PHP7 or higher (HHVM is not supported) and you consulted the [Predis](https://github.com/nrk/predis) or [PhpRedis](https://github.com/phpredis/phpredis) documentation.
For replication use the `WP_REDIS_SERVERS` constant, for sharding the `WP_REDIS_SHARDS` constant and for clustering the `WP_REDIS_CLUSTER` constant.
For authentication use the `WP_REDIS_PASSWORD` constant.
__Replication (Master-Slave):__
define( 'WP_REDIS_SERVERS', [
'tcp://127.0.0.1:6379?database=5&alias=master',
'tcp://127.0.0.2:6379?database=5&alias=slave-01',
] );
__Replication (Redis Sentinel):__
define( 'WP_REDIS_CLIENT', 'predis' );
define( 'WP_REDIS_SENTINEL', 'mymaster' );
define( 'WP_REDIS_SERVERS', [
'tcp://127.0.0.1:5380',
'tcp://127.0.0.2:5381',
'tcp://127.0.0.3:5382',
] );
__Sharding:__
define( 'WP_REDIS_SHARDS', [
'tcp://127.0.0.1:6379?database=10&alias=shard-01',
'tcp://127.0.0.2:6379?database=10&alias=shard-02',
'tcp://127.0.0.3:6379?database=10&alias=shard-03',
] );
__Clustering (Redis 3.0+):__
define( 'WP_REDIS_CLUSTER', [
'tcp://127.0.0.1:6379?database=15&alias=node-01',
'tcp://127.0.0.2:6379?database=15&alias=node-02',
] );
== WP-CLI Commands ==
To use the WP-CLI commands, make sure the plugin is activated:
wp plugin activate redis-cache
The following commands are supported:
* `wp redis status`
Show the Redis object cache status and (when possible) client.
* `wp redis enable`
Enables the Redis object cache. Default behavior is to create the object cache drop-in, unless an unknown object cache drop-in is present.
* `wp redis disable`
Disables the Redis object cache. Default behavior is to delete the object cache drop-in, unless an unknown object cache drop-in is present.
* `wp redis update-dropin`
Updates the Redis object cache drop-in. Default behavior is to overwrite any existing object cache drop-in.
== Screenshots ==
1. Plugin settings, connected to a single Redis server.
2. Plugin settings, not connected to a Redis cluster.
== Changelog ==
= 1.5.7 =
- Added support for PhpRedis TLS connections
- Added support for timeout, read timeout and password when using PhpRedis cluster
- Fixed issue with `INFO` command
- Fixed object cloning when setting cache keys
= 1.5.6 =
- Added object cloning to in-memory cache
- Fixed PHP notice related to `read_timeout` parameter
= 1.5.5 =
Please flush the object cache after updating the drop to v1.5.5 to avoid dead keys filling up Redis memory.
* Removed lowercasing keys
* Remove scheduled metrics event
* Fixed Redis version call when using replication
= 1.5.4 =
* Removed metrics
= 1.5.3 =
* Fixed: Call to undefined function `get_plugin_data()`
* Fixed: Call to undefined method `WP_Object_Cache::redis_version()`
= 1.5.2 =
* Added Redis version to diagnostics
* Added `WP_REDIS_DISABLE_BANNERS` constant to disable promotions
* Fixed an issue with `redis.replicate_commands()`
= 1.5.1 =
This plugin turned 5 years today (Nov 14th) and its only fitting to release the business edition today as well.
[Redis Cache Pro](https://wprediscache.com/) is a truly reliable, highly optimized and easy to debug rewrite of this plugin for SMBs.
* Added execution times to actions
* Added `WP_REDIS_VERSION` constant
* Fixed PhpRedis v3 compatibility
* Fixed an issue with selective flushing
* Fixed an issue with `mb_*` functions not existing
* Replaced Email Address Encoder card with Redis Cache Pro card
* Gather version metrics for better decision making
= 1.5.0 =
Since Predis isn't maintained any longer, it's highly recommended to switch over to PhpRedis (the Redis PECL extention).
* Improved Redis key name builder
* Added support for PhpRedis serializers
* Added `redis_object_cache_error` action
* Added timeout, read-timeout and retry configuration
* Added unflushable groups (defaults to `['userlogins']`)
* Fixed passwords not showing in server list
= 1.4.3 =
* Require PHP 5.4 or newer
* Use pretty print in diagnostics
* Throw exception if Redis library is missing
* Fixed cache not flushing for some users
* Fixed admin issues when `WP_REDIS_DISABLED` is `false`
= 1.4.2 =
* Added graceful Redis failures and `WP_REDIS_GRACEFUL` constant
* Improved cluster support
* Added `redis_cache_expiration` filter
* Renamed `redis_object_cache_get` filter to `redis_object_cache_get_value`
= 1.4.1 =
* Fixed potential fatal error related to `wp_suspend_cache_addition()`
= 1.4.0 =
* Added support for igbinary
* Added support for `wp_suspend_cache_addition()`
= 1.3.9 =
* Fixed `WP_REDIS_SHARDS` not showing up in server list
* Fixed `WP_REDIS_SHARDS` not working when using PECL extension
* Removed `WP_REDIS_SCHEME` and `WP_REDIS_PATH` leftovers
= 1.3.8 =
* Switched from single file Predis version to full library
= 1.3.7 =
* Revert back to single file Predis version
= 1.3.6 =
* Added support for Redis Sentinel
* Added support for sharing
* Switched to PHAR version of Predis
* Improved diagnostics
* Added `WP_REDIS_SELECTIVE_FLUSH`
* Added `$fail_gracefully` parameter to `WP_Object_Cache::__construct()`
* Always enforce `WP_REDIS_MAXTTL`
* Pass `$selective` and `$salt` to `redis_object_cache_flush` action
* Don’t set `WP_CACHE_KEY_SALT` constant
= 1.3.5 =
* Added basic diagnostics to admin interface
* Added `WP_REDIS_DISABLED` constant to disable cache at runtime
* Prevent "Invalid plugin header" error
* Return integer from `increment()` and `decrement()` methods
* Prevent object cache from being instantiated more than once
* Always separate cache key `prefix` and `group` by semicolon
* Improved performance of `build_key()`
* Only apply `redis_object_cache_get` filter if callbacks have been registered
* Fixed `add_or_replace()` to only set cache key if it doesn't exist
* Added `redis_object_cache_flush` action
* Added `redis_object_cache_enable` action
* Added `redis_object_cache_disable` action
* Added `redis_object_cache_update_dropin` action
= 1.3.4 =
* Added WP-CLI support
* Show host and port unless scheme is unix
* Updated default global and ignored groups
* Do a cache flush when activating, deactivating and uninstalling
= 1.3.3 =
* Updated Predis to `v1.1.1`
* Added `redis_instance()` method
* Added `incr()` method alias for Batcache compatibility
* Added `WP_REDIS_GLOBAL_GROUPS` and `WP_REDIS_IGNORED_GROUPS` constant
* Added `redis_object_cache_delete` action
* Use `WP_PLUGIN_DIR` with `WP_CONTENT_DIR` as fallback
* Set password when using a cluster or replication
* Show Redis client in `stats()`
* Change visibility of `$cache` to public
* Use old array syntax, just in case
= 1.3.2 =
* Make sure `$result` is not `false` in `WP_Object_Cache::get()`
= 1.3.1 =
* Fixed connection issue
= 1.3 =
* New admin interface
* Added support for `wp_cache_get()`'s `$force` and `$found` parameter
* Added support for clustering and replication with Predis
= 1.2.3 =
* UI improvements
= 1.2.2 =
* Added `redis_object_cache_set` action
* Added `redis_object_cache_get` action and filter
* Prevented duplicated admin status messages
* Load bundled Predis library only if necessary
* Load bundled Predis library using `WP_CONTENT_DIR` constant
* Updated `stats()` method output to be uniform with WordPress
= 1.2.1 =
* Added `composer.json`
* Added deactivation and uninstall hooks to delete `object-cache.php`
* Added local serialization functions for better `advanced-cache.php` support
* Updated bundled Predis version to `1.0.3`
* Updated heading structure to be semantic
= 1.2 =
* Added Multisite support
* Moved admin menu under _Settings_ menu
* Fixed PHP notice in `get_redis_client_name()`
= 1.1.1 =
* Call `select()` and optionally `auth()` if HHVM extension is used
= 1.1 =
* Added support for HHVM's Redis extension
* Added support for PECL Redis extension
* Added `WP_REDIS_CLIENT` constant, to set preferred Redis client
* Added `WP_REDIS_MAXTTL` constant, to force expiration of cache keys
* Improved `add_or_replace()`, `get()`, `set()` and `delete()` methods
* Improved admin screen styles
* Removed all internationalization/localization from drop-in
= 1.0.2 =
* Added "Flush Cache" button
* Added support for UNIX domain sockets
* Improved cache object retrieval performance significantly
* Updated bundled Predis library to version `1.0.1`
= 1.0.1 =
* Load plugin translations
* Hide global admin notices from non-admin users
* Prevent direct file access to `redis-cache.php` and `admin-page.php`
* Colorize "Disable Object Cache" button
* Call `Predis\Client->connect()` to avoid potential uncaught `Predis\Connection\ConnectionException`
= 1.0 =
* Initial release
== Upgrade Notice ==
= 1.4.2 =
This update renames the `redis_object_cache_get` filter to avoid conflicts. Update your code if necessary.
= 1.4.0 =
This update adds support for igbinary and `wp_suspend_cache_addition()`.
= 1.3.9 =
This update contains fixes for sharding.
= 1.3.8 =
This update contains a critical fix for Predis.
= 1.3.7 =
This update fixes an issue with Predis in some environments.
= 1.3.6 =
This update contains various improvements.
= 1.3.5 =
This update contains various changes, including performance improvements and better Batcache compatibility.
= 1.3.4 =
This update contains several improvements, including WP CLI and WordPress 4.6 support.
= 1.3.3 =
This update contains several improvements.
= 1.3.2 =
This update includes a critical fix for PhpRedis.
= 1.3.1 =
This update includes a critical connection issue fix.
= 1.3 =
This update includes a new admin interface and support for clustering and replication with Predis.
= 1.2.3 =
This updated includes several UI improvements.
= 1.2.2 =
This updated includes several bug fixes and improvements.
= 1.2.1 =
This update includes several improvements and compatibility fixes.
= 1.1.1 =
This update fixes critical bugs with the HHVM extension
= 1.1 =
This update includes bug fixes and adds supports for HHVM/PECL Redis extensions.
= 1.0.2 =
This update includes significant speed improvements and support for UNIX domain sockets.
= 1.0.1 =
This update includes several security, user interface and general code improvements.
原创声明
本文由 NG6 于2020年03月29日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:WordPress搭配Redis加速网站访问速度 | sleele的博客
本文由 NG6 于2020年03月29日发表在 sleele的博客
如未特殊声明,本站所有文章均为原创;你可以在保留作者及原文地址的情况下转载
转载请注明:WordPress搭配Redis加速网站访问速度 | sleele的博客
这个redis优化感觉不错,我也试试看~谢谢分享
Redis Object Cache 参数
插件目录下有readme,按照你的需求添加填写到wp-config.php
这个作用大吗?
@ibolee 挑选关键的就行了,然后用credis