EN · ORIGINAL REPOSITORY DOCUMENT
Changelog
Original English text. Commands and evidence apply to the revision and environment stated in the document.
CHANGELOG.md
On this page
Changelog
All notable changes to this project will be documented in this file.
v1.26.0-rc.1 - 2026-10-04 (production acceptance pending)
Changed
- Hot path: build cache identifiers from a memoized per-site/group hashed prefix plus
rawurlencode($key)instead of serializing a lookup key on every call; identifiers are unchanged (verified againstKeyspace::id()). Look up global groups through a set, skip closure creation for untraced client calls, memoize command name casing, test runtime presence withisset()first and return early from remember-group and prefetch-recording checks. Runtime acceptance and benchmarks remain pending. - PhpRedis 6.0/6.1 (no
getWithMeta()): read values on direct connections with one atomic pipelined MULTI GET+EXISTS instead of GET followed by a plain MULTI, which PhpRedis sends one command per round trip (5 round trips per miss before, 1 now). Storedfalseand WRONGTYPE handling are unchanged; verified with php/igbinary and none/lzf/zstd/lz4 on PhpRedis 6.0.2 and 6.1.0. Cluster, Relay, replicated and Sentinel connections keep their existing read path. - Send MULTI..EXEC blocks of write-only commands inside a pipeline on native PhpRedis clients (one round trip instead of one per command), normalizing boolean replies; transactions containing reads keep the plain MULTI path. Skip UNWATCH after an executed EXEC, which already clears every WATCH.
- Prefetch: skip rewriting the request’s metadata record (a watched multi-command transaction) while the record read at boot already covers the recorded keys for at least half its TTL.
- Analytics: claim the periodic Redis INFO sample with a raw
SET NX EX 3(redis-sample) instead ofget()/set()oflast-sample, so measurements no longer credit their own hit/miss and runtime-cache metrics. - Confirm absolute EXPIREAT deadlines for key-growth hourly metadata and completed-scan history inside the existing watched transaction. Preserve SET’s finite EX fallback and reject unconfirmed expiry without replay. Delay/expiry-failure validation remains deferred.
- Require PHP 8.2+ and PhpRedis 6.0+ consistently in bootstrap, plugin, drop-in and Composer.
- Start a cold v2 namespace with lossless prefix/site/group/key encoding and group hash tags.
- Use pinned WATCH/MULTI/EXEC for split alloptions and bounded prefetch metadata, without conflict replay.
- Reuse up to eight clean direct transaction sockets per owning connection for Cluster and cache-enabled Relay. Preserve per-transaction Cluster discovery and discard sockets on errors, changed settings or unavailable native state checks; publish observation deltas only.
- Use a single watched primary for persistent counters; return false and invalidate local memory on conflicts or unconfirmed writes.
- Do not replay ordinary Sentinel writes or unknown/raw commands; suppress native retries during the send and retain existing read retries.
- Default group cleanup to incremental SCAN; delete at most 500 keys per command.
- Bound prefetch metadata to one hour, 256 keys per request and 1,024 request records per site by default.
- Bound memory logs and saved commands to 500 records and report omitted entries.
- Move redis-cli passwords to the child process environment; require CLI 5+ for password use.
Added
- Owner-approved opt-in historical TTL evidence: shared request budgets, a separate capped site/hour record with absolute retention, confirmed-write histograms and explicit completed-hour CLI/REST/admin reports. Existing Insights schema and cache policy are unchanged; see TTL-HISTORY.md. Final acceptance remains pending.
- Extend the existing real HTTP profile with bounded confirmed-write TTL evidence: requested/capped/sent seconds, histogram and explicit coverage; distinguish runtime-only writes and preserved counter expiry. Cover single/bulk, alloptions and remember publication without new Redis probes or hourly schema changes. Correlate bulk replies with queued IDs. Final validation remains deferred; see HTTP-PROFILE.md.
- Owner-approved portable configuration presets (
woocommerce,membership,publishing,multisite), explicit-field precedence, strict bounded manifest validation and exact group TTL caps before jitter. Add read-only CLI list/show/export/import/diff and current-site REST/Insights previews; report the cap in key diagnostics and TTL review. No automatic application, TTL rewrite or measured performance claim. Final tests remain deferred; see CONFIGURATION-PROFILES.md. - Opt-in key-growth diagnostics: bounded HMAC key/pattern observations and hourly HLL estimates; explicit fenced live SCAN with completion/topology checks; bounded history and conservative growth comparisons;
wp redis key-growth, scoped REST/admin actions and opt-in doctor guidance. Source review only; runtime/backend/performance acceptance remains pending. See KEY-GROWTH.md. - Read-only TTL/persistence evidence in Cache Insights: aggregate completed-hour activity across callers of each group, identify usage patterns, show current policy context and suppress directions on errors/overflow or incomplete site scope. Add admin/JSON/REST output and
wp redis insights --ttl-reviewwith bounded results. Per-key lifetime/reuse measurement and numeric TTL recommendations remain unimplemented; no settings change or runtime acceptance is claimed. wp redis profile <url>(source 2026-10-05): one real same-site anonymous GET, HMAC one-use ticket, captured-primary handoff, forced request-only collection, bounded per-call timing/size events and signed temporary report; JSON/table and explicit partial/unavailable outcomes. Exclude forced samples from hourly Insights. Final runtime/backend/performance validation remains pending; see HTTP-PROFILE.md.- Sampled Cache Insights (source 2026-10-05): 2% request sampling by default, bounded component/group attribution, logical payload coverage without reserialization, site/hour counters on the owner-approved WATCH path, bounded report reads, six review rules, existing-library admin charts, protected REST and
wp redis insights. No runtime or performance acceptance is claimed; see CACHE-INSIGHTS.md. wp redis why <key> --group=<group> --format=json|tablewith current scope/policy, memory flags, primary type/TTL/hash-marker and optional remember-lease metadata. Explain hypothetical write TTLs with –ttl, distinguish observed evidence from unknown history, omit cache values/raw identities and return distinct error/conflict exit codes. Final CLI/backend validation is pending.- Separate opt-in
ocp_remember()API with bounded primary-side leases/waiting, ownership-checked publication and caller-only fallback in protected scopes. Default-emptystampede_groupsenables two-phase lease invalidation for mutations and lease-first cleanup; preserve existing codecs, TTL caps/jitter, hash merging and WordPress signatures. See STAMPEDE.md for deployment and partial-EXEC limits. - Drop-in migration settings page with current/replacement fingerprints, private signed backup downloads, short-lived install confirmation and guarded restoration through WordPress’s filesystem API. Require core POST nonces, cache and plugin-installation capabilities, plus a network super administrator on multisite; retain existing lifecycle/CLI behavior.
- Optional
ttl_jitterpercentage (0-100, default 0): randomly shorten finite TTLs after existing limits, independently per bulk key and for split alloptions, while preserving counter and metadata expiry policies. - Current-request performance panel and existing-library historical charts.
- Permission-checked site/network cleanup preview exposing only key fingerprints.
- CLI doctor JSON/table reports and explicit preview-first legacy namespace cleanup.
- Source/drop-in/harness provenance and fixture/configuration matching for benchmark comparison.
Fixed
- Preserve full management group scans while converting incomplete/invalid reads to a generic REST error. Bound each memory pipeline to 500 keys, inspect the captured transaction client’s error state and distinguish missing memory observations from zero-byte measurements.
- Correct group response context filtering; expose non-atomic scan/missing-memory metadata without changing the successful list shape. Prevent overlapping UI scans, keep the selected memory mode stable during a request and label scan counts/memory as estimates. These source changes are untested.
- Keep Query Monitor output tied to its matching collector, preserve another extension’s replacement output, and keep the commands menu accessible without its parent cache menu. Guard optional backtrace and Members registration APIs.
- Show omitted log counts and retained-only command totals in Query Monitor, distinguish general log entries from Redis commands, tolerate incomplete raw-command log context and escape rendered command labels. Verification is deferred at the owner’s request.
- Repair the ApexCharts CDN fallback: use the correct WordPress tag filters, attach the existing SHA-512 integrity hashes to their exact CSS/JS source, and preserve other tag attributes. Keep the bundled assets, pinned CDN version and older WordPress fallback. Source change only; verification deferred at the owner’s request.
- Reject unsupported or unconfirmed namespace resets before recording a successful flush or writing reset metadata; convert backend PHP errors to the existing logged false result.
- Guard optional native ATOMIC/SCAN constants, align the diagnostic transaction property with its existing constructor check, clarify Insights counter types, and register return-valued WordPress hooks as filters while retaining callback identities.
- Correct WP-CLI option paragraph boundaries so format validation does not reject hours, group names, timeouts or event limits.
- Catch the actual ConnectionException in Relay CONFIG/SLOWLOG helpers; preserve false on connection errors, unrelated exceptions and no replay. A focused regression reproduced the prior uncaught exception.
- Honor WordPress’s found flag in
wp_cache_remember()andwp_cache_sear(), preserving cached false values without invoking the callback. These helpers do not acquire leases or wait. - Preserve active raw codec scopes across Sentinel primary/replica discovery and direct Cluster/Relay transactions; restore captured settings on both retired and replacement connections, including nested scopes and partial failures.
- Reject unsuccessful initial serializer/compression option setup and close the affected socket before serving cache operations.
- Separate drop-in ownership from inherited compatibility: automatic/admin enable, update and deactivation, plus CLI disable, preserve files whose product name and URI do not match this project’s bundled drop-in.
- Refresh header/stat caches before ownership decisions and after successful mutations; expose protected files in the widget, dashboard, Site Health and doctor. Explicit CLI enable –force remains available for deliberate replacement.
- Restore captured serializer/compression options after raw callbacks, including nested calls and partial setup failures; reject unsuccessful restoration, attempt to close the affected client and preserve the first error.
- Unwind raw-mode scopes on the original primary/replica connections even when another node fails or discovery replaces the connection references.
- Count error records omitted at the request buffer limit and expose them separately from logger omissions in cache info, diagnostics and the performance panel.
- Include omitted errors in overview/Site Health totals, reset the counter on fresh cache initialization, and escape Site Health error messages as text.
- Preserve the original transaction/callback failure when UNWATCH, DISCARD, mode inspection, routing restoration or client close also fails.
- Reject failed transaction cleanup instead of reporting success, and attempt to close uncertain native connections without replay.
- Normalize bare bracketed IPv6 Cluster seeds without appending an extra port.
- Preserve merged alloptions data after bulk writes and invalidate memory on failed hash updates.
- Keep prefetch metadata in the site that requested each key.
- Verify prefetch record/index membership before crediting eviction space; repair detected inconsistencies even when both containers have equal counts.
- Reject failed or malformed prefetch membership reads before executing writes; preserve no-replay behavior after partial EXEC failures.
- Reject failed prefetch cardinality reads before queuing writes; skip metadata reads after the request key budget is exhausted.
- Validate prefetch record expiration and reject invalid incremental deletion counts.
- Abort alloptions writes before EXEC on fresh existence-command errors, invalid TTL replies or a hash missing at the TTL read.
- Validate cleanup replies, propagate failures, and preserve scoped cleanup with the full group setting.
- Show database-wide effects of full cleanup in management UI and previews.
- Label global/network preview scopes correctly and show the effective cleanup method and atomicity.
- Keep doctor reports structured when client capability or drop-in inspection fails; never echo private exception details.
- Include failed-command wait time and align performance reporting sources.
- Remove the counter’s TTL-dropping SET fallback; use conditional KEEPTTL or remaining-TTL PX on older servers (see migration limitations).
- Resolve named Cluster profiles before launching redis-cli.
Acceptance
- Key diagnostics, native TYPE normalization and the shared deterministic jitter-range calculation have source review only. CLI/help/exit codes, metadata/error/side-effect contracts, input/integer limits, real topology/Relay behavior and performance checks remain final-phase gates.
- The approved separate remember API and mutation/cleanup integration have source review only. Syntax/static checks, option/false/null/hash/TTL contracts, 20-process races, partial EXEC/lost replies, real topology/Relay/Valkey checks and five-repeat performance measurements remain final-phase gates. No earlier passing report validates this addition.
- Drop-in ownership and management changes are source-reviewed only; focused fixtures and real WordPress lifecycle/UI/CLI verification are deferred to the final test phase. Header identity is not proof of file integrity or protection against concurrent external writers.
- The latest codec-restoration changes have source review only. Per the owner’s current workflow, tests remain required but will run together after the development changes are complete; earlier passing reports do not validate this patch.
- The error-buffer reporting update passed 38 PHP unit cases and 152 assertions, including a 24-check bounds/reporting scenario. Ten source/template/test files passed syntax checks. Scoped PHPStan reported eight findings reproduced on the preceding commit, with no new findings; it is not a clean static-analysis result. The earlier real WordPress run predates this update.
- After owner authorization, PHP 8.3.0/PHPUnit 9.6.37 passed 37 local regression cases and 148 assertions; one real WordPress/Docker feature test was skipped.
- Regression fixtures cover the approved v2/counter contracts and reject truncated local HTTP responses through either observed PHP error path.
- Eleven changed PHP files passed syntax checks; nine related production files passed PHPStan level 5 with zero errors.
- A subsequent fresh WordPress 6.8.3/WooCommerce 10.2.2/PHP 8.3.35/PhpRedis 6.1.0/Redis 7.4.2 run passed six real integration scripts and the lifecycle suite; the previously skipped contracts.php scenario passed. All 37 regression cases passed in the Linux container as well.
- The prefetch correction passed the 37 regression invocations, seven real integration scripts and lifecycle suite in a new fresh fixture. Its new real Redis scenario passed 50 checks for bounds, seeded metadata inconsistencies, TTL, serialization and site/data isolation. Partial EXEC failure injection remains covered by deterministic clients; added Redis read overhead is not yet measured.
- Runtime/drop-in bytes were checked against 187 source files. The disposable fixture’s containers, network and volumes were removed after the run.
- Real Cluster/Sentinel/TLS/Relay, two-customer checkout, 20-process/million-key, browser and baseline/candidate performance gates remain open.
- Prior revision results do not establish v2 correctness, backend parity or the five-percent performance gate.
- See MIGRATION-v2.md for cold rollout, legacy cleanup, and rollback into an unused namespace.
v1.25.6 - 2026-07-28
Changed
- Warn about using
WP_REDIS_DISABLEDin WP CLI - Hide configuration constant notice in WP CLI when unnecessary
Fixed
- Fixed metrics missing from
aggregateanddigestCLI watchers - Fixed malformed tags in health check
actions - Fixed dashboard widget spacing and overflow
- Fixed some commands from being routed to replicas when
cluster_failover=distribute*
v1.25.5 - 2026-05-08
Added
- Support WordPress 7.x theme colors
- Support Relay’s
cluster_(az|distribution_strategy|failover_strategy)options
Fixed
- Avoid unnecessary HTTP calls in rare scenarios
- Fixed admin menu update indicator
v1.25.4 - 2026-04-22
Changed
- Preserve valid options in fallback when
Configuration::safelyFrom()fails - Improved failure resilience of
wp_cache_get_multiple() - Improved logging of failed transactions
Fixed
- Resolved rare deprecation notice
- Improved rare pipeline initialization failure handling
- Throw exception in
PhpRedisClusterConnectionwhenping()orinfo()fail
v1.25.3 - 2026-04-08
Fixed
- Fixed Query Monitor 4.x compatibility
- Disable analytics before uninstalling plugin
- Prevent rare fatal error in shutdown handler
- Prevent rare array to string conversion warning
v1.25.2 - 2026-03-09
Added
- Added
wp redis licenseCLI command
Changed
- Improved error handling for
CONFIGandSLOWLOGcommands - Switch to per-interval deltas instead of cumulative totals in “Requests” charts
- Avoid timeouts by chunking analytics measurements retrieval
Fixed
- Fixed chart overlapping in WordPress 7.x
- Fixed rare uncaught
TypeErrorinLicensing
v1.25.1 - 2025-12-02
Added
- Added optional
analytics.persist_limitconfiguration option
Changed
- Avoid timeouts when flushing with
analytics.persistenabled - Limit analytics persist size
memory_limit / 2by default - Retry failed read commands on primary node before switching Sentinels
- Consider
*WithMeta()calls read-only on replicated connections
Fixed
- Disable cache if
WP_SETUP_CONFIGis defined - Fixed purging analytics measurements
- Fixed unit type of Relay “Memory” chart
v1.25.0 - 2025-10-22
Added
- Added API/CLI endpoints to reset slowlog and command statistics
Changed
- Enable
strictmode by default when aprefixis set - Prevent integrity flush after cache was reset
- Removed transient deletion limit of 10k sites
- Loosen Relay
prefixhealth check - Replaced
current_time('timestamp')withtime() - Avoid changing parameter names during inheritance
Fixed
- Fixed accessing
CONFIGon cluster connections - Fixed accessing
INFO COMMANDSTATSon old Redis versions - Fixed selecting databases on persistent connections
- Fixed KeyDB detection
- Prevent diagnostics warning when
WP_REDIS_DISABLEDis enabled - Hardened license health check against API outages
v1.24.5 - 2025-08-21
Fixed
- Fixed analytics charts not rendering under some conditions
v1.24.4 - 2025-08-20
Added
- Added
objectcache_analytics_snapshot_measurementsfilter
Changed
- Increased adaptive cache configuration defaults
- Support negative
relay.adaptive.eventsvalues - Switched all
stringdiagnostics toDiagnosticobjects - Use
#[SensitiveParameter]for strings that may contain passwords
Fixed
- Reduce number of measurements fetched for metrics snapshot
- Fixed
WP_REDIS_DISABLEDnot being respected in some places - Prevent type error trying to format
nullmetric values - Prevent rare diagnostics error when not connected
- Prevent rare error when uninstalling plugin using WP CLI
v1.24.3 - 2025-07-02
Changed
- Support Relay’s new adaptive cache
statusproperty - Support flushing Relay memory on clustered connections
- Disabled memory usage when scanning groups on clustered connections
- Improved
SLOWLOGhandling on clustered connections - Send sanitized metrics snapshot
Fixed
- Prevent error when running cron and using foreign object cache
- Prevent error when calling
INFOand using older PhpRedis versions - Fixed adaptive cache
eventsandratioconfiguration not taking effect - Handle permission errors when running
SLOWLOG|GETandMEMORY|USAGE
v1.24.2 - 2025-06-20
Added
- Added
wp redis analytics-countCLI command
Fixed
- Prevent excessive analytics snapshots
v1.24.1 - 2025-06-17
Fixed
- Prevent error when using ElastiCache Serverless instances
- Prevent
unexpected tokenerrors when scripts are inlined - Prevent event listener registration when adaptive cache widget is missing
- Switched to ES6 over ES11 syntax
- Fixed groups scan API call if permalinks are disabled
- Fixed up some widget padding
v1.24.0 - 2025-06-14
Added
- Added experimental support for Relay’s adaptive cache
- Added health, slowlog and command statistics widgets
- Added
queryttlconfiguration option (defaults to 24h) - Support calculating memory using in groups widget
- Added
groups,slowlog,commandsandprune-queriesCLI command - Added
objectcache_flushlog_limitfilter
Changed
- Prevent cache from being enabled if handshake fails
- Be more helpful when connection fails
- Improved diagnostics and various health checks
- Store cache analytics as plain JSON
- Don’t store path and hostname in analytics by default
- Check license gracefully when sleeping for 72+ hours
- Display latency in milliseconds (not microseconds)
- Sort results in groups widget
- Log
getWithMeta()calls asGET - Hide
wp_cache_set_last_changedin Query Monitor stack - Deprecated
countproperty onobjectcache/v1/groupsendpoint - Download cache groups as CSV instead of copying to clipboard
- Perform integrity flush if WordPress version changes
- Changed cache command log level from
infotodebug - Omit logging cache commands in default
ErrorLogLogger - Include
noticein default log levels
Fixed
- Fixed Batcache compatibility issue
- Fixed Relay client access replicated and clustered connections
v1.23.1 - 2025-03-17
Changed
- Support disambiguating
falsereturn values using$found(PhpRedis 6.2; Relay 0.10.1) - Show integrity flush reason in flush log widget
- Use unified base REST controller class
- Support calling
FLUSHDBwithoutASYNCon Relay connections
Fixed
- Fixed undefined array key access
- Fixed Dragonfly issues with lua scripts
- Fixed strict types error when using
ZRANGE
v1.23.0 - 2025-03-13
Added
- Added server type to diagnostics
- Added health checks for
KEEPTTLrequirements (Redis 6.0; PhpRedis 5.3)
Changed
- Bump required PhpRedis version to 4.0.0
- Promote
noevictionhealth check status to critical - Exclude WooCommerce’s
wc_cache_*group from prefetching - Retry loading cache metadata with backoff
- Reduced blocking time when pruning analytics measurements
- Switch away from deprecated Redis commands
- Support discarding pipelines and transactions
- Reduced memory footprint of
Connection::command()
Fixed
- Prevent integrity flush when metadata can’t be loaded
- Preserve key TTL when (de|in)crementing numeric key
- Fixed resetting log levels when
debugmode is disabled - Prevent rare warnings in
connectToSentinels() - Avoid undefined key notices in
RedisMetrics - Avoid calling invalid calls to
flushBlog()
v1.22.0 - 2025-01-23
Added
- Added
fulloption forgroup_flushconfiguration option
Changed
- Switch
group_flushdefault value toscan - Swap all
error_log()call for internallog()helper - Log all messages when
debugmode is enabled - Improve performance of analytics API requests
Fixed
- Fixed rare
TypeErrorinDiagnostics::redisVersion() - Fixed scheme detection for
wp redis clicommand - Fixed inverted multi/pipeline modes
- Fixed OpenTelemetry tracer integration
- Avoid cloning connection when computing metrics
Removed
- Removed deprecated
$RedisCacheProglobal
v1.21.3 - 2024-10-29
Changed
- Allow more cache key separators in Relay prefix health check
Fixed
- Fixed changelog not being accessible when
DISALLOW_FILE_MODSis set - Avoid rare notice when using Query Monitor
- Removed debug call
v1.21.2 - 2024-07-18
Added
- Support setting
strictmode usingOBJECTCACHE_STRICTenvironment variable
Changed
- Don’t enable
strictmode when aprefixis set
Fixed
- Fixed connection error when no Sentinel replicas are available
v1.21.1 - 2024-05-21
Fixed
- Fixed rare type mismatch when running admin lifecycle
v1.21.0 - 2024-05-08
Added
- Added Redis cluster support when using Relay
- Added
ErrorLogContextLoggerfor easier debugging
Changed
- Enabled
strictmode by default - Support
WC_SESSION_CACHE_GROUPconstant - Use decorrelated jitter backoff algorithm for connection attempts
- Check
wp_is_file_mod_allowed('object_cache_dropin')before automatically deleting drop-in - Added
Relay*Connection::keysInMemory()helpers - Improved latency widget content when using cluster connection
- Use configured logger and log levels when logging from plugin itself
- Resolved PHP 8.4 deprecation notices
Fixed
- Avoid rare fatal error in
Configuration::safelyFrom() - Fixed
objectcache_allow_dropin_modfilter
v1.20.2 - 2023-10-28
Fixed
- Fixed plugin version string
v1.20.1 - 2023-10-27
Changed
- Log exception message when cache reset fails
- Don’t run filesystem health check if
DISALLOW_FILE_MODSistrue - Changed filesystem test file name from
.object-cache-test.tmptoobject-cache.tmp
Fixed
- Fixed
async_flushwhen using PhpRedis v6.0 - Avoid
TypeErrorwhen usingWP_Error::get_error_data()
v1.20.0 - 2023-09-19
Added
- Added cache integrity protection
- Added analytics charts to dashboard widget
- Added
objectcache_widget_metricsfilter - Added
wp redis resetcommand - Added support for
OBJECTCACHE_OVERRIDEandOBJECTCACHE_MERGEconstants - Added support for PhpRedis v6.0
- Added
analytics.sample_rateconfiguration option
Changed
- Reduce default
retriesfrom5to3 - Refresh nonce using
X-WP-Nonceheader - Expose Relay license issues in Dashboard widget
- Refactored various flush mechanisms
- Expanded
ObjectCache::withoutMutations()callback type fromClosuretocallable - Delete
objectcache_*site options when uninstalling - Improved license API error handling
Fixed
- Fixed failover when using Redis Sentinel
- Bump
plugins_apipriority to prevent plugins from hijacking responses - Mute rare
undefined array keynotice influshBacktraceSummary()
Removed
- Removed
split_the_queryfilter in favor of native WordPress 6.4 behavior - Removed deprecated
rediscache_*filters - Removed deprecated
ObjectCache::flushMemory()method - Removed
objectcache_analytics_retentionfilter - Removed
--asyncoption fromwp redis flush
v1.19.0 - 2023-07-21
Added
- Added
strictconfiguration option - Added group flush log widget
- Added link to settings to dashboard widget
- Added Relay memory health check
- Added support for
OBJECTCACHE_PREFER_RELAYenvironment variable - Added support for
pathandsocketconfiguration options - Added support for
redis-error.phptemplate - Added
objectcache_cleanup_transientsfilter - Added
--skip-transientsoption towp redis enable
Changed
- Render connection exceptions similar to WordPress database errors
- Throw exception when selecting non-existent database
- Delete all transients from database after enabling cache
- Support logging early flushes before plugin code was initialized
- Improved
WP_Query::get_posts()performance usingsplit_the_query - Made Relay diagnostics more helpful
- Renamed
relay-memory-activetorelay-memory-used - Not longer recommend disabling
prefetchandsplit_alloptionswhen using Relay
Fixed
- Display Relay’s memory consumption more accurately
- Improve handling non-fatal
MGETfailures - Prevent
wp_cache_init()initializing twice - Avoid rare fatal error when parsing JSON responses
- Avoid confusing hiredis error message Relay connection times out
- Avoid fatal error when
gmt_offsetis not valid
v1.18.2 - 2023-04-04
Added
- Added Query Monitor constants to panel
Changed
- Renamed
ms-cache-mediantoms-cache-avg
Fixed
- Discard transactions if they fail
- Prevent REST API responses from being cached
- Fixed measuring analytics writes
- Fixed
storeWaitAveragecalculation - Fixed supported Redis version indicator when using Relay
v1.18.1 - 2023-03-24
Changed
- Updated End-User License Agreement
- Don’t flush cache when updating drop-in
Fixed
- Fixed cache timing metric
- Fixed widget flush button label on multisite
- Fixed flushing groups that end with blog id on multisite
v1.18.0 - 2023-02-20
Added
- Added
wp redis flush-groupCLI command
Changed
- Reduced overall memory usage
- Made cache key generation slightly faster
- Enable flush logging by default
- Log
warninglevel by default - Execute not split
alloptionsreads on primary node - Refactored object cache metrics to use new
ObjectCacheMetrics - Enabled flush logging when
save_commandsis set - Disabled command logging entirely unless
save_commandsis set - Return primary node from
*SentinelsConnection::client()instead of sentinel client
Fixed
- Handle foreign keys without a group in groups REST API endpoint
- Respect
async_flushwhen usingwp_cache_delete()
Removed
- Dropped support for Query Monitor <=3.8.0 backtraces
- Removed metrics keys from
info()in favor ofmetrics() - Removed
backtrace_summarylogging and deprecatedBacktraceLogger
v1.17.1 - 2023-01-28
Changed
- Switched to faster Zstandard compression level
- Handle non
int|stringcache keys stricter and more gracefully - Throw exception for invalid cache keys when
debugoption is enabled - Don’t let the perflab plugin hijack the object cache drop-in
- Defer registering
wp redisCLI command
Fixed
- Fixed several multisite blog flushing issues
- Fixed accessing client on replicated connections
- Fixed setting
analyticsoption to boolean - Fixed calling
get_plugin_data()on non-existent drop-in
v1.17.0 - 2022-11-23
Added
- Added support replicated and sentinel Relay connections
- Added
group_flushconfiguration option supportingkeys(new faster default),scan(previous default) andincremental(enormous datasets) - Added
tracerconfiguration option supportingnew-relicand globalopen-telemetrytracer providers - Support
network_flushoption when using Redis Cluster - Support New Relic tracing for Redis Cluster, Redis Sentinel and Relay clients
- Added
*Connection::listKeys()helpers - Added
PhpRedisClusterConnection::eval*()helpers - Added Redis Server version health checks and indicators
Changed
- Bumped scan and batch removal from
100to500keys - Flush more prudently even on main site when using
network_flush - Indicate whether the network or site will be flushed in overview widget in multisite environments
- Renamed all the things from master(s) to primary/primaries with backwards compatibility
- Improved must-use plugin detection
- ⚠️ Added
client()method toConnectionInterface - ⚠️ Use new
ClientInterfacein allConnectionInterfaceimplementations - ⚠️ Renamed
Connectorinterface toConnectorInterface - ⚠️ Renamed
handleBlogFlush()toshouldFlushBlog() - Renamed
flush_networkoption tonetwork_flush - Use
ObjectCache::$blogIdinstead ofget_current_blog_id() - Use
ObjectCacheCollector::get_storage(): QM_Datareturn type - Show received bytes and sent bytes in Query Monitor
- Strip slashes from commands in Query Monitor
- Improved support for
scan()and*scan()methods - Delete FOSS drop-in upon plugin activation
Fixed
- Fixed various Redis Sentinel issues
- Fixed
Invalid regular expressionin Safari - Fixed parsing
rawCommand()in Query Monitor calls when using Redis Cluster - Fixed health check for configuration constant being defined too late
- Fixed attempted property access on null in
Diagnostics::relayHasCache() - Fixed groups widget padding
- Fixed inverted “Relay Cache” metadata in Query Monitor
Removed
- Dropped Twemproxy support
- Dropped
PhpRedisClusterConnection::scanNode()helper - Dropped
*ObjectCache::Clientconstants - Dropped
WP_REDIS_PHPREDIS_OPTIONSconstant
v1.16.4 - 2022-10-31
Added
- Added support for WordPress 6.1’s
wp_cache_supports()
Changed
- Refer to “external cache” as “datastore” everywhere
- Hide
wp_cache_get_last_changed()andwp_cache_flush_group()in Query Monitor
Fixed
- Fixed inverted “Relay Cache” diagnostic
- Fixed rare undefined
OPT_MAX_RETRIESconstant error - Don’t use WordPress 5.3’s
WP_REST_Request::has_param()
v1.16.3 - 2022-10-09
Added
- Added new
wp redis statuscommand - Added
objectcache_omit_settings_pointerfilter - Added
relay.cacheconfiguration option
Changed
- Improved support for Relay’s “client only” mode
- Renamed
wp redis infotowp redis diagnostics - Made
wp redis infoan alias ofwp redis status - Refined hosting provider detection
- Use new
Connection::$classproperty for FQCNs
Fixed
- Fixed rare fatal
ValueError
Removed
- Removed no longer needed
Relay::dispatchEvents()calls
v1.16.2 - 2022-09-29
Added
- Added support for Relay’s “client only” mode
- Added compatibility with new Query Monitor data classes
- Added
objectcache_allow_dropin_modfilter - Added
relay.allowedandrelay.ignoredconfiguration options
Changed
- Append context to
objectcache_*_errorerrors - Verify
Transactionresult type and count - Make it easy to copy all cache groups to the clipboard
- Refined API health check and diagnostics
- Refined overview widget
- Refined analytics charts loading and messages
- Refined hosting provider detection
Fixed
- Avoid executing empty transactions
- Fixed update channel field availability
- Fixed Query Monitor request time ratio calculation
- Fixed rare Query Monitor issue when connection is
null - Hide more update notices when
updatesisfalse - Don’t inline widget CSS twice
v1.16.1 - 2022-08-29
Fixed
- Fixed health check condition
v1.16.0 - 2022-08-22
Added
- Added WordPress 6.1
wp_cache_flush_group()support - Added REST API endpoint for plugin options
- Added
objectcache_omit_analytics_footnotefilter - Added connection retries
- Added support for
OBJECTCACHE_CONFIGenvironment variable - Added integration for WP User Manager
- Added
withTimeout()andwithoutTimeout()connection helpers
Changed
- Pass PHPStan L7
- ⚠️ Made
Plugin,ConfigurationandTransactionclasses final - ⚠️ Added
MeasuredObjectCacheInterface - ⚠️ Added
commands(),memoize(),ioWait()andwithoutMutations()toConnectionInterface - Reduced default (read-)timeout from
5.0sto2.5s - Reduced default retry interval from
100msto25ms - Use
retry_intervalconfiguration option as backoff base - Use
read_timeoutconfiguration option as backoff cap - Use option API endpoint to save various settings
- Append backtrace to invalid cache key type log message
- Overhauled
flush_runtime()andflushRuntime()methods - Default to
defaultgroup inObjectCachehelpers - Accept any
callableforloggerconfiguration option - Catch callback exceptions in
PhpRedisConnection::withoutMutations() - Improved retry/backoff support for Relay connections
- Support Relay event listeners for WordPress 6.0
*_multiple()methods - Renamed
defaultbackoff tosmart - Only calculate cache size when needed and do so more memory-friendly
Fixed
- Fixed handling invalid cache keys
- Fixed loading of settings styles when must-use is symlinked elsewhere
- Fixed dashboard widget positioning
- Relaxed URL validation
- Avoid timeouts when deleting by pattern
- Avoid rare key identifier collisions
- Prevent rare analytics restore failure
- Fixed up
PhpRedisReplicatedConnectionlogic formulti()andflushdb()calls - Import missing exception in
Configuration\Concerns\Sentineltrait - Fixed return value of
Updates::setUpPluginInfo()when error occurred - Drop
mixedtype inPhpRedisClusterConnection::scanNode() - Prevent loading plugin more than once
- Don’t hijack
actionparameter on dashboards
Removed
- ⚠️ Removed deprecated
flushRuntimeCache()helper
v1.15.2 - 2022-06-30
Added
- Added SQL queries metric
Fixed
- Don’t require
ext-rediswhen running Relay transactions - Only hide upgrade notice in must-use setups
- Tweak widget latency warning color
- Fixed rare error of
get_num_queries()not being available
v1.15.1 - 2022-06-19
Added
- Show basename in diagnostics
Changed
- Add Redis and Relay samples to analytics footnote
- Narrow type hint to
TransactioninPhpRedisConnection::executeMulti()
Fixed
- Handle PHP 7.0/7.1 environments gracefully
- Show error when using bad plugin slug
- Don’t render analytics when not connected
- Avoid rare undefined index when not connected in Query Monitor
- Catch all
Throwableerrors inObjectCache::error(), not only exceptions
v1.15.0 - 2022-06-10
This releases introduces a settings page to keep an eye on cache analytics, manage plugin updates and use diagnostic tools.
Added
- Added analytics charts under Settings > Object Cache
- Added plugin updates under Settings > Object Cache -> Updates
- Added various tools under Settings > Object Cache -> Tools
- Added WordPress 6.0’s
wp_cache_*_multiple()andwp_cache_flush_runtime()functions - Added support for Redis Sentinel
- Hijack all transactions to allow command logging
- Added
X-Redirect-Byfor all redirects - Added
analytics,sentinels,serviceandrelay.invalidationsconfiguration options - Added REST API endpoint for analytics, cache groups and latency
- Added
master()andreplicas()toPhpRedisReplicatedConnection - Added
nodes()toPhpRedisClusterConnection - Added
updatesconfiguration option - Added
wp redis analyticsCLI command that mimics REST API endpoint
Changed
- ⚠️ Require PHP 7.2+
- ⚠️ Require Relay v0.4.0
- ⚠️ Added
flush_runtime()toObjectCacheInterface - ⚠️ Added
add_multiple(),set_multiple()anddelete_multiple()toObjectCacheInterface - ⚠️ Added
connectToSentinels()andconnectToReplicatedServers()ConnectionInterface - Use group name as hash slot on cluster connections
- Deprecated
flushMemory()in favor offlushRuntime()for naming consistency - Redirect to settings after activation
- Allow analytics to be restored after cache flushes
- Only accept integers and non-empty strings as key names
- Dropped
stringtype for$keyin severalObjectCacheInterfacemethods - Hide misleading Relay statistics in
wp redis info - Reverted: Store
alloptionsas individual keys when using Relay - Increased Batcache compatibility
- Disabled
flush_networkoption when using Redis cluster - Marked PhpRedis v5.3.4 and older as outdated
- Catch
Throwableeverywhere, notException - Use a single
window.objectcacheobject - Highlight expensive commands in Query Monitor
- Be more helpful about missing command logs in Query Monitor
Fixed
- Fixed rare error when enabling drop-in
- Block
wp redis enablewhenWP_REDIS_CONFIGis not set - Fixed instantiating configuration without valid client extension present
- Avoid fatal error in
CommandsCollectorwhen no connection is established - Show
rawCommand()calls as actual commands in Query Monitor - Various other bug fixes small additions and improvements
- Fixed selecting non-zero databases in
wp redis cli - Fixed rare rendering issue with
wp redis watch digest - Fixed normalization of IDNs
- Don’t request filesystem write access to check for drop-in existence
- Fixed rare bug when flushing specific site via
wp redis flush 1337
Security
- Prevent risky plugin auto-updates
- Prevent plugin upgrades when using version control
v1.14.5 - 2022-03-22
Added
- Store
alloptionsas individual keys when using Relay - Added health check for Relay configuration
- Added
Plugin::config()helper method
Changed
- Bump Relay requirement to v0.3.0
- Sped up
ObjectCache::id()lookups by caching prefix - Sped up
alloptionshash deletion when usingasync_flush - ⚠️ Renamed
SplitsAllOptionstrait toSplitsAllOptionsIntoHash
Fixed
- Fixed support of older Query Monitor versions
- Added missing
retriesandbackoffto diagnostics - Avoid rare error in
Connection::ioWait() - Avoid rare
TypeErrorinDiagnostics - Avoid rare error in Query Monitor when no connection is present
v1.14.4 - 2022-02-03
Added
- Introduced
ObjectCache::ClientandObjectCache::clientName()
Changed
- Use
QM_VERSIONto detect Query Monitor version - Convert logged commands names to uppercase
- Avoid log spam when calling Relay’s
socketId(),socketKey()orlicense() - Make
isMustUse()andusingVCS()helpers static - Ignore all connection methods in Query Monitor backtraces
- Use new
qm/component_type/unknownfilter to set component type
Fixed
- Avoid warnings when displaying rare commands in Query Monitor
v1.14.3 - 2021-12-30
Added
- Added file header health checks
- Use Query Monitor backtraces and components when available
- Added integrations for several user role editors
- Detect must-use installations and VCS checkouts
- Respect
WP_REDIS_UPDATES_DISABLEDconstant and environment variable - Added
Plugin::Capabilityconstant - Added
Plugin::$directoryvariable
Changed
- Use
REQUEST_TIME_FLOATwhen available for improved accuracy - Improve handling when
WP_REDIS_CONFIGis set too late - Use
current_screenaction to register dashboard widgets - Use
wp_add_inline_style()for widget styles
Fixed
- Replaced non-functional capability checks using
map_meta_capwithuser_has_capfilter - Restored plugin meta links
- Restored mu-plugin and drop-in update notices
- Disable update button in must-use setups
- Corrected value used for total Relay memory
- Avoid warning in
DiagnosticswhenWP_REDIS_CONFIGis not set
v1.14.2 - 2021-12-12
Added
- Added
objectcache_dashboard_widgetfilter - Added
objectcache_network_dashboard_widgetfilter - Added
backoffandretriesconfiguration options - Added
pre_objectcache_flushfilter to short-circuit the flushing - Safeguard against update confusion attacks using
Update URIplugin header - Added
sharedconfiguration option to show key count instead of database size in shared environment
Changed
- Use decorrelated jitter backoff algorithm by default for all connections
- Append analytics comment to all XML feeds
- Show license state in Query Monitor and diagnostics
- Collect Relay key counts in metrics
- Bump Relay requirement to v0.2.2
- Memorize
Relay::stats()calls
Fixed
- Several PHP 8.1 compatibility fixes
v1.14.1 - 2021-10-26
Fixed
- Fixed invalid nonce errors
Removed
- Removed unnecessary
phpversion()andsetOption()calls inRelayConnector
v1.14.0 - 2021-10-26
⚠️ This release contains minor breaking changes.
Added
- ⚠️ Added
Connector::supports()method - ⚠️ Added
ObjectCacheInterface::boot()method - Added Twemproxy support
- Added
ObjectCache::metrics()method - Added
Connection::ioWait()method - Added
Plugin::flush()helper - Added several
Diagnostichelper methods - Display Relay cache size in dashboard widget
- Track reads, writes, hits and misses counts
- Added cluster support to
wp redis cli - Allow clusters to be flushed asynchronously
- Added backbone for analytics and
wp redis watchcommand with 3 watcher types - Added environment type and host to all diagnostics
Changed
- ⚠️ Changed dashboard widget identifier to
dashboard_objectcache - Deprecated
$GLOBALS['RedisCachePro'], use to$GLOBALS['ObjectCachePro']instead - Deprecated
rediscache_managecapability, use toobjectcache_manageinstead - Deprecated
rediscache_validate_dropinfilter, useobjectcache_validate_dropininstead - Deprecated
rediscache_validate_dropin_versionfilter, useobjectcache_validate_dropin_versioninstead - Deprecated
rediscache_check_filesystemfilter, useobjectcache_check_filesysteminstead - Trigger
E_USER_WARNINGinstead ofE_USER_NOTICEinObjectCache::__get() - Always use asynchronous flushing with Relay
- Flush the cache when calling
wp redis enableandwp redis disable, unless--skip-flushis passed - Don’t
EXPIREthealloptionshash map - Memorize
PINGandINFOresults when feasible - Register shutdown function to close cache in
wp_cache_init() - Store prefetches when closing cache
- Only log incompatible key prefetch warnings in
debugmode - Show extended metrics in Query Monitor panel
- Simplified Debug Bar integration
- Moved CLI commands into
Consolenamespace - Boot connector when setting client in the configuration, not in
wp_cache_init() - Improved error messages when checking of compression/serializer in configuration
- Use SPL autoload function in
bootstrap.php - Increased priority of dashboard widget
- Set default
timeoutandread_timeoutto5seconds - Set default
retry_intervalto100milliseconds - Always verify invalid licenses when running health checks
- Bumped the HTTP timeout for license health checks to
15seconds - Invalidate drop-in file opcode when disabling the cache
- Cache
get_plugin_data()calls to improve performance - Flush the cache when enabling/disabling the drop-in via dashboard widget and when deactivating the plugin
- Support must-use Query Monitor setups
- Bumped
prefixlimit to32characters
Fixed
- Speed up API health check
- Fixed some rare PHP notices
- Fixed fatal error when using
urloption without password - Prevent unnecessary config calls in
RelayObjectCache - Support
object-cache-pro.phpbasename setups - Fix PHP 7.1 and older compatibility in
License
Removed
- Removed unnecessary confirm dialogs from dashboard widget action
v1.13.3 - 2021-06-08
Added
- Support passing function names to
loggerconfiguration option
Changed
- Improved Relay integration and support
- Improved unsupported
compressionandserializererror messages - Renamed more things to “Object Cache Pro”
Fixed
- Support
urloption without usernames - Ensure
wp_debug_backtrace_summary()is loaded to increase Batcache compatibility
Security
- Hide passwords in
urlfrom diagnostics
v1.13.2 - 2021-04-29
Added
- Added
relay_listenersconfiguration option - Added a
BacktraceLoggerlogger for easy debugging - Added wildcard support in non-prefetchable group names
Changed
- Split up
setMutationOptions()methods
Fixed
- Fixed flushing clusters when using a TLS connection
v1.13.1 - 2021-04-14
Changed
- Disable prefetching for CLI and API requests
- Added
userloginsandwc_session_idto non-prefetchable groups - Prevent even more
__PHP_Incomplete_Classerrors when using prefetching
Fixed
- Fixed type error in
PrefetchesKeys
v1.13.0 - 2021-04-12
Added
- Added support for Relay
- Added
clientconfiguration option - Added
tls_optionsconfiguration option - Added
ObjectCache::withoutMutations()helper - Added
PrefetchesKeys::deletePrefetches()helper - Added
infolog lines towp_cache_init() - Added wildcard support in non-persistent group names
- Show command count and argument class names in Query Monitor
Changed
- Respect
debugconfiguration option inwp_cache_init() - Added
Connector::boot(): voidinterface method - Deprecated
WP_REDIS_PHPREDIS_OPTIONSconstant - Renamed several internal exceptions
- Access fully qualified constants
- Expect
PhpRedisConnectioninPhpRedisObjectCacheconstructor - Use high resolution time when available
- Increased command time decimals from
2to4 - Refactored license code to be more graceful
- Prevent
__PHP_Incomplete_Classerrors when using prefetching
Fixed
- Fixed flushing networks when using the
siteorglobaloption - Fixed preloading in multisite environments
- Fixed prefetches count discrepancies
v1.12.0 - 2020-12-23
Added
- Improved PHP 8 compatibility
- Added support for Batcache
- Support flagging groups as non-prefetchable
- Added
ObjectCache::deleteFromMemory(string $key, string $group)method - Added
ObjectCache::flushMemory()in favor ofObjectCache::flushRuntimeCache() - Added
rediscache_validate_dropinfilter - Added
rediscache_validate_dropin_versionfilter
Changed
- Support loading the object cache as early as
advanced-cache.php - Changed default value of
cluster_failovertoerrorto improve stability - Refactored
flushBlog(int $siteId, string $flush_network = null)method - Check
wp_is_file_mod_allowed('object_cache_dropin')before automatically updating drop-in - Marked PHP 7.3 as outdated
Fixed
- Prevent another rare undefined variable notice in
wp_cache_init() - Resolve incompatibility with Query Monitor 3.6.5
- Updated some links to the documentation
v1.11.1 - 2020-11-12
Changed
- Only preload groups with at least two keys
Fixed
- Convert integer group names to strings
v1.11.0 - 2020-11-11
Added
- Added prefetching 🚀
- Added
ObjectCache::flushRuntimeCache()method - Added
PhpRedisConnection::withoutMutations()method - Added support for Query Monitor’s new backtraces
Changed
- Improved memory usage display in widget
- Speed up command execution when using replication
- Improved parameter formatting in Query Monitor
- Attach backtrace as array along with backtrace summary to log messages
- Moved runtime cache helpers from to
ObjectCacheclass
Fixed
- Fixed updating split
alloptionshash options with equivalent values - Send
alloptionshash read commands to the master when using replication - Prevent rare undefined variable notice in
wp_cache_init()
v1.10.2 - 2020-09-28
Added
- Overload generic
cache_hitsandcache_missesproperties
Changed
- Always return a
ConfigurationfromConfiguration::safelyFrom() - Use invalid configuration option name (not method name) in error log message
Fixed
- Use key caching in multisite environments
- Added suffix to MU and Drop-in stubs to avoid invalid plugin header error when activating
v1.10.1 - 2020-09-16
Fixed
- Fixed an issue with non-persistent, numeric keys in
get_multiple()
v1.10.0 - 2020-09-15
Added
- Show connection class in Query Monitor
- Added
Configuration::parseUrl()helper - Added support for replicated connections
- Show configuration instantiation errors in widget and site health
Changed
- Moved
RedisCachePro\Configclass toRedisCachePro\Configuration\Configuration - Renamed
slave_failoverconfiguration option tocluster_failover✊🏿 - Extracted cluster related configuration into
RedisCachePro\Configuration\Concerns\Cluster - Trim log messages to 400 characters in Debug Bar log
- Throw
RedisConfigValueExceptionfor invalid configuration values instead ofRedisConfigException
Fixed
- Create a proper configuration object when cache instantiation fails
- Escape command parameters in Query Monitor extension
- Moved Redis related information from
ObjectCache::info()toPhpRedisObjectCache::info() - Always strip
unix://from PhpRedis host parameter - Ensure
PhpRedisObjectCache::info()->statusreturns a boolean - Prevent invalid configuration values from booting plugin
v1.9.2 - 2020-08-29
Added
- Look for
object-cache-prodirectory in must-use stub
Fixed
- Fixed host scheme in PhpRedis 5.0.2 and older
v1.9.1 - 2020-08-26
Added
- Added
wp_cache_remember()andwp_cache_sear()functions
Changed
- Pointed all URLs to the new domain
objectcache.pro - Change log prefix from
rediscachetoobjectcache - Slightly sped up API loading in object cache drop-in
Fixed
- Only throw exception in mu-plugin and drop-in when
WP_DEBUGis true
v1.9.0 - 2020-08-15
Added
- Added
urlconfiguration option - Added
schemeconfiguration option - Added support for
optionsparameter added in PhpRedis 5.3 - Added support for LZ4 compression (PhpRedis 5.3+)
Changed
- Support connecting to sockets and using TLS in
wp redis cli - Convert
hostconfiguration option to lowercase - Set
schemewhen included inhostconfiguration option
Fixed
- Fixed getting multiple numeric keys in
ArrayObjectCache - Fixed setting
port,database,maxttlandretry_intervalas numeric string
v1.8.2 - 2020-08-11
Changed
- Reverted eager plugin name change in v1.8.1
- Updated plugin URL to new domain to avoid redirects
Fixed
- Don’t flag drop-in as invalid when it’s just outdated
v1.8.1 - 2020-08-11
Changed
- Look for API in
object-cache-prodirectories
Fixed
- Fixed an issue with numeric keys and improved error handling in
get_multiple()
v1.8.0 - 2020-07-23
Added
- Added
usernameconfiguration option for Redis 6 ACL support - Added
cacheconfiguration option to set a custom object cache class - Added
connectorconfiguration option to set a custom connector class - Added
flush_networkconfiguration option (defaults toall) - Support flushing individual sites via Network Admin > Sites
- Added
--skip-flush-noticeoption towp redis enablecommand - Added health check to ensure asynchronous flushing is supported
- Added health check to ensure drop-in can be managed
- Added intuitive alias for all WP CLI commands
- Added support for
wp_cache_get_multiple()introduced in WP 5.5
Changed
- Renamed “Dropin” to “Drop-in” everywhere
- Support flushing individual sites using
wp redis flush - Hide Redis memory from dashboard widget in multisite environments
- Display notice when license token is not set or invalid, as well as when the license is unpaid or canceled
Fixed
- Explicitly set permissions of
object-cache.phptoFS_CHMOD_FILE
v1.7.3 - 2020-07-10
Fixed
- Support older versions of Query Monitor
- Ignore HTTP errors for license verification requests
- Prevent undefined index notice in
ObjectCache::info() - Prevent call to undefined function in
Licensing::telemetry()
v1.7.2 - 2020-07-09
Added
- Use
wp_opcache_invalidate()on drop-in - Refactored
Diagnosticsto useDiagnosticobjects
Changed
- Minor dashboard widget improvements
- Minor Query Monitor extension improvements
- Cleanup plugin options upon deactivation
- Disable FOSS version when activating plugin to avoid confusion
Fixed
- Escape more HTML outputs
- Prevent unnecessary license verification requests
v1.7.1 - 2020-06-08
Fixed
- Always send
setOption()values as string - Fixed Query Monitor panels not showing up for some setups
- Fixed
ArrayObjectCachefallback instantiation inwp_cache_init() - Format all commands parameters using
json_encode()in Query Monitor panel
v1.7.0 - 2020-05-30
Added
- Added support for Query Monitor
- Added context to license issues in the dashboard widget
- Show updates for must-use plugin and object cache drop-in
Changed
- Improved formatting of config values in diagnostics
- Don’t highlight
noevictionpolicy when maxTTL is set
Fixed
- Prevent unnecessary plugin update requests
v1.6.0 - 2020-05-11
Added
- Support PHP 7.0 and PhpRedis 3.1.1
- Indicate missing license token in dashboard widget
Changed
- Switched to
WP_CLI\Utils\proc_open_compat()forwp redis cli - Ping Redis during object cache initialization to catch
LOADINGerrors
Fixed
- Fixed potential
TypeErrorduringupgrader_process_completeaction
v1.5.1 - 2020-04-29
Fixed
- Fixed global group cache keys
Security
- Prevent XSS injection using cache group names when using Debug Bar
v1.5.0 - 2020-04-22
Added
- Added
Requires PHPandNetworkto plugin header fields - Show supported compression formats in site health
Changed
- Initialize plugin after all plugins have been loaded
- Improved the plugin version and basename detection
- Improved muting the
wp redis cliauth warning - Don’t require setting
portwhen connecting to a unix socket - Validate config connection information before connecting
- Always inline widget styles (1015 bytes)
- Always inject plugin details into
update_pluginstransient - Improved obfuscation of sensitive values
- Hide health link from plugin actions in WP <5.2 and multisite networks
- Prevent widget color clashing with color scheme
Fixed
- Fixed detection of multisite networks
- Fixed setting global and non-persistent groups
- Fixed notices in Debug Bar extension
- Fixed
INFOcommand when using cluster
Removed
- Removed
wp_clear_scheduled_hookforrediscache_report
v1.4.0 - 2020-02-27
Added
- Added support for storing
alloptionskey as hash - Added
wp redis clicommand to spawnredis-cliprocess with configuration - Support
WP_REDIS_DIRconstant inmu-plugin.phpstub
Changed
- Ensure object cache drop-in is valid before flushing via CLI
- Colorized
wp redis flusherrors
Fixed
- Fixed typo in
RedisConfigMissingException - Fixed logs missing from Debug Bar
- Fixed cloning logic in
PhpRedisObjectCache::storeInMemory() - Inline styles when plugin is symlinked or located outside of web root
v1.3.0 - 2020-02-06
Added
- Added support for asynchronous flushing
- Added support for data compression using LZF and Zstandard
- Added network admin dashboard widget
- Added
wp redis flushcommand with support for--asyncflag - Automatically update drop-in after plugin update
- Show used and max memory in widget, site health and Debug Bar
Changed
- Switched to using
ErrorLogLoggerby default - The
ArrayLoggernow extendsErrorLogLoggerand vice versa - The log levels now default to
['emergency', 'alert', 'critical', 'error'] - Changed log level of
ObjectCache::error()fromcriticaltoerror - Introduced
PhpRedisMissingExceptionandPhpRedisOutdatedException - Attempt direct filesystem access when WP filesystem initialization fails
- Renamed internal cache methods in
PhpRedisObjectCacheto be more descriptive - Capture more errors by using
Throwablein some places - Moved Debug Bar HTML into template files
- Support setting
log_levelsconfiguration option tonull
Removed
- Support setting
tokenandpasswordtonull - Removed captured errors from site health information
v1.2.1 - 2020-01-20
Added
- Added health checks link to plugin actions
Changed
- Made initialization exceptions more helpful
- Escape HTML in Debug Bar log messages
- Improved pinging cluster nodes
Fixed
- Fixed duplicate prefix when using cluster
- Fixed undefined index notices in
Licensing - Fixed a issue when loading widget styles as must-use plugin
- Resolved minor spelling mistakes
v1.2.0 - 2019-11-29
Added
- Added dashboard widget
- Added support for automatic WordPress updates
- Added diagnostic tests and information to Tools > Site Health
- Added
tokenconfiguration option to set license token
Changed
- Disable object cache when deactivating/uninstalling the plugin
Fixed
- Fixed DebugBar integration on case-sensitive filesystems
v1.1.0 - 2019-11-19
Added
- Added log levels
- Added
WP_REDIS_DISABLEDenvironment variable
Changed
- Use
PhpRedisConnectionfor each master when flushing clusters - Obfuscate all non-
nullpasswords in diagnostics - Allow password to be
nullfor more convenient fallbacks
Fixed
- Prevent timeouts when flushing database
- Use inline styles to clear floats in Debug Bar panels
Security
- Obfuscate password in constants section of diagnostics
v1.0.0 - 2019-11-01
Added
- Initial stable release