Version Description
- Added
redis_cache_add_non_persistent_groups
filter - Fixed
wp_add_dashboard_widget
parameters - Fixed
WP_REDIS_SERVERS
replication issue with Predis v2.0 - Fixed
WP_REDIS_CLUSTER
string support - Fixed issue when
MGET
fails inget_multiple()
call - Fixed several warnings in the event of pipeline failures
Download this release
Release Info
Developer | tillkruess |
Plugin | Redis Object Cache |
Version | 2.2.0 |
Comparing to | |
See all releases |
Code changes from version 2.1.6 to 2.2.0
- includes/class-metrics.php +2 -1
- includes/class-plugin.php +21 -13
- includes/diagnostics.php +2 -3
- includes/object-cache.php +47 -34
- includes/ui/class-tab.php +8 -8
- includes/ui/tabs/overview.php +1 -0
- languages/redis-cache.pot +75 -75
- readme.txt +11 -2
- redis-cache.php +1 -1
includes/class-metrics.php
CHANGED
@@ -257,7 +257,7 @@ class Metrics {
|
|
257 |
global $wp_object_cache;
|
258 |
|
259 |
if ( ! self::is_active() ) {
|
260 |
-
return;
|
261 |
}
|
262 |
|
263 |
try {
|
@@ -267,6 +267,7 @@ class Metrics {
|
|
267 |
} catch ( Exception $exception ) {
|
268 |
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
|
269 |
error_log( $exception );
|
|
|
270 |
}
|
271 |
}
|
272 |
|
257 |
global $wp_object_cache;
|
258 |
|
259 |
if ( ! self::is_active() ) {
|
260 |
+
return 0;
|
261 |
}
|
262 |
|
263 |
try {
|
267 |
} catch ( Exception $exception ) {
|
268 |
// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log
|
269 |
error_log( $exception );
|
270 |
+
return 0;
|
271 |
}
|
272 |
}
|
273 |
|
includes/class-plugin.php
CHANGED
@@ -45,7 +45,7 @@ class Plugin {
|
|
45 |
/**
|
46 |
* Plugin instance property
|
47 |
*
|
48 |
-
* @var Plugin
|
49 |
*/
|
50 |
private static $instance;
|
51 |
|
@@ -208,6 +208,8 @@ class Plugin {
|
|
208 |
'dashboard_rediscache',
|
209 |
__( 'Redis Object Cache', 'redis-cache' ),
|
210 |
[ $this, 'show_dashboard_widget' ],
|
|
|
|
|
211 |
'normal',
|
212 |
'high'
|
213 |
);
|
@@ -281,7 +283,7 @@ class Plugin {
|
|
281 |
return;
|
282 |
}
|
283 |
|
284 |
-
wp_enqueue_style( 'redis-cache', WP_REDIS_PLUGIN_DIR . '/assets/css/admin.css',
|
285 |
}
|
286 |
|
287 |
/**
|
@@ -362,7 +364,7 @@ class Plugin {
|
|
362 |
wp_enqueue_script(
|
363 |
'redis-cache-charts',
|
364 |
plugins_url( 'assets/js/apexcharts.min.js', WP_REDIS_FILE ),
|
365 |
-
|
366 |
WP_REDIS_VERSION,
|
367 |
true
|
368 |
);
|
@@ -507,15 +509,15 @@ class Plugin {
|
|
507 |
global $wp_object_cache;
|
508 |
|
509 |
if ( defined( 'WP_REDIS_DISABLED' ) && WP_REDIS_DISABLED ) {
|
510 |
-
return;
|
511 |
}
|
512 |
|
513 |
if ( ! $this->validate_object_cache_dropin() ) {
|
514 |
-
return;
|
515 |
}
|
516 |
|
517 |
if ( ! method_exists( $wp_object_cache, 'redis_status' ) ) {
|
518 |
-
return;
|
519 |
}
|
520 |
|
521 |
return $wp_object_cache->redis_status();
|
@@ -531,12 +533,14 @@ class Plugin {
|
|
531 |
global $wp_object_cache;
|
532 |
|
533 |
if ( defined( 'WP_REDIS_DISABLED' ) && WP_REDIS_DISABLED ) {
|
534 |
-
return;
|
535 |
}
|
536 |
|
537 |
-
if ( $this->validate_object_cache_dropin()
|
538 |
-
return
|
539 |
}
|
|
|
|
|
540 |
}
|
541 |
|
542 |
/**
|
@@ -551,9 +555,11 @@ class Plugin {
|
|
551 |
return $wp_object_cache->diagnostics[ 'client' ];
|
552 |
}
|
553 |
|
554 |
-
if ( defined( 'WP_REDIS_CLIENT' ) ) {
|
555 |
-
return
|
556 |
}
|
|
|
|
|
557 |
}
|
558 |
|
559 |
/**
|
@@ -564,9 +570,11 @@ class Plugin {
|
|
564 |
public function get_diagnostics() {
|
565 |
global $wp_object_cache;
|
566 |
|
567 |
-
if ( $this->validate_object_cache_dropin()
|
568 |
-
return
|
569 |
}
|
|
|
|
|
570 |
}
|
571 |
|
572 |
/**
|
45 |
/**
|
46 |
* Plugin instance property
|
47 |
*
|
48 |
+
* @var Plugin|null
|
49 |
*/
|
50 |
private static $instance;
|
51 |
|
208 |
'dashboard_rediscache',
|
209 |
__( 'Redis Object Cache', 'redis-cache' ),
|
210 |
[ $this, 'show_dashboard_widget' ],
|
211 |
+
null,
|
212 |
+
null,
|
213 |
'normal',
|
214 |
'high'
|
215 |
);
|
283 |
return;
|
284 |
}
|
285 |
|
286 |
+
wp_enqueue_style( 'redis-cache', WP_REDIS_PLUGIN_DIR . '/assets/css/admin.css', [ ], WP_REDIS_VERSION );
|
287 |
}
|
288 |
|
289 |
/**
|
364 |
wp_enqueue_script(
|
365 |
'redis-cache-charts',
|
366 |
plugins_url( 'assets/js/apexcharts.min.js', WP_REDIS_FILE ),
|
367 |
+
[ ],
|
368 |
WP_REDIS_VERSION,
|
369 |
true
|
370 |
);
|
509 |
global $wp_object_cache;
|
510 |
|
511 |
if ( defined( 'WP_REDIS_DISABLED' ) && WP_REDIS_DISABLED ) {
|
512 |
+
return null;
|
513 |
}
|
514 |
|
515 |
if ( ! $this->validate_object_cache_dropin() ) {
|
516 |
+
return null;
|
517 |
}
|
518 |
|
519 |
if ( ! method_exists( $wp_object_cache, 'redis_status' ) ) {
|
520 |
+
return null;
|
521 |
}
|
522 |
|
523 |
return $wp_object_cache->redis_status();
|
533 |
global $wp_object_cache;
|
534 |
|
535 |
if ( defined( 'WP_REDIS_DISABLED' ) && WP_REDIS_DISABLED ) {
|
536 |
+
return null;
|
537 |
}
|
538 |
|
539 |
+
if ( ! $this->validate_object_cache_dropin() || ! method_exists( $wp_object_cache, 'redis_version' ) ) {
|
540 |
+
return null;
|
541 |
}
|
542 |
+
|
543 |
+
return $wp_object_cache->redis_version();
|
544 |
}
|
545 |
|
546 |
/**
|
555 |
return $wp_object_cache->diagnostics[ 'client' ];
|
556 |
}
|
557 |
|
558 |
+
if ( ! defined( 'WP_REDIS_CLIENT' ) ) {
|
559 |
+
return null;
|
560 |
}
|
561 |
+
|
562 |
+
return WP_REDIS_CLIENT;
|
563 |
}
|
564 |
|
565 |
/**
|
570 |
public function get_diagnostics() {
|
571 |
global $wp_object_cache;
|
572 |
|
573 |
+
if ( ! $this->validate_object_cache_dropin() || ! property_exists( $wp_object_cache, 'diagnostics' ) ) {
|
574 |
+
return null;
|
575 |
}
|
576 |
+
|
577 |
+
return $wp_object_cache->diagnostics;
|
578 |
}
|
579 |
|
580 |
/**
|
includes/diagnostics.php
CHANGED
@@ -9,6 +9,7 @@ defined( '\\ABSPATH' ) || exit;
|
|
9 |
|
10 |
global $wp_object_cache;
|
11 |
|
|
|
12 |
$info = [];
|
13 |
$filesystem = $roc->test_filesystem_writing();
|
14 |
$dropin = $roc->validate_object_cache_dropin();
|
@@ -24,9 +25,7 @@ $info['Drop-in'] = $roc->object_cache_dropin_exists()
|
|
24 |
$info['Disabled'] = $disabled ? 'Yes' : 'No';
|
25 |
|
26 |
if ( $dropin && ! $disabled ) {
|
27 |
-
$info[ 'Ping' ] =
|
28 |
-
? $wp_object_cache->diagnostics[ 'ping' ]
|
29 |
-
: false;
|
30 |
|
31 |
try {
|
32 |
$cache = new WP_Object_Cache( false );
|
9 |
|
10 |
global $wp_object_cache;
|
11 |
|
12 |
+
/** @var \Rhubarb\RedisCache\Plugin $roc */
|
13 |
$info = [];
|
14 |
$filesystem = $roc->test_filesystem_writing();
|
15 |
$dropin = $roc->validate_object_cache_dropin();
|
25 |
$info['Disabled'] = $disabled ? 'Yes' : 'No';
|
26 |
|
27 |
if ( $dropin && ! $disabled ) {
|
28 |
+
$info[ 'Ping' ] = $wp_object_cache->diagnostics['ping'] ?? false;
|
|
|
|
|
29 |
|
30 |
try {
|
31 |
$cache = new WP_Object_Cache( false );
|
includes/object-cache.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Redis Object Cache Drop-In
|
4 |
* Plugin URI: https://wordpress.org/plugins/redis-cache/
|
5 |
* Description: A persistent object cache backend powered by Redis. Supports Predis, PhpRedis, Relay, replication, sentinels, clustering and WP-CLI.
|
6 |
-
* Version: 2.
|
7 |
* Author: Till Krüss
|
8 |
* Author URI: https://objectcache.pro
|
9 |
* License: GPLv3
|
@@ -428,9 +428,9 @@ class WP_Object_Cache {
|
|
428 |
/**
|
429 |
* Prefix used for non-global groups.
|
430 |
*
|
431 |
-
* @var
|
432 |
*/
|
433 |
-
public $blog_prefix =
|
434 |
|
435 |
/**
|
436 |
* Track how many requests were found in cache.
|
@@ -514,9 +514,11 @@ class WP_Object_Cache {
|
|
514 |
}
|
515 |
|
516 |
if ( defined( 'WP_REDIS_CLUSTER' ) ) {
|
517 |
-
|
|
|
|
|
518 |
|
519 |
-
$this->diagnostics[ 'ping' ] =
|
520 |
? $this->redis->getClientFor( $connectionID )->ping()
|
521 |
: $this->redis->ping( $connectionID );
|
522 |
} else {
|
@@ -637,7 +639,7 @@ class WP_Object_Cache {
|
|
637 |
$this->diagnostics[ 'shards' ] = WP_REDIS_SHARDS;
|
638 |
} elseif ( defined( 'WP_REDIS_CLUSTER' ) ) {
|
639 |
if ( is_string( WP_REDIS_CLUSTER ) ) {
|
640 |
-
$this->redis = new RedisCluster( WP_REDIS_CLUSTER
|
641 |
} else {
|
642 |
$args = [
|
643 |
'cluster' => $this->build_cluster_connection_array(),
|
@@ -651,9 +653,8 @@ class WP_Object_Cache {
|
|
651 |
}
|
652 |
|
653 |
$this->redis = new RedisCluster( null, ...array_values( $args ) );
|
|
|
654 |
}
|
655 |
-
|
656 |
-
$this->diagnostics += $args;
|
657 |
} else {
|
658 |
$this->redis = new Redis();
|
659 |
|
@@ -745,7 +746,7 @@ class WP_Object_Cache {
|
|
745 |
|
746 |
if ( strcasecmp( 'unix', $parameters['scheme'] ) === 0 ) {
|
747 |
$args['host'] = $parameters['path'];
|
748 |
-
$args['port'] =
|
749 |
}
|
750 |
|
751 |
$args['read_timeout'] = $parameters['read_timeout'];
|
@@ -817,7 +818,7 @@ class WP_Object_Cache {
|
|
817 |
} elseif ( defined( 'WP_REDIS_SERVERS' ) ) {
|
818 |
$servers = WP_REDIS_SERVERS;
|
819 |
$parameters['servers'] = $servers;
|
820 |
-
$options['replication'] =
|
821 |
} elseif ( defined( 'WP_REDIS_CLUSTER' ) ) {
|
822 |
$servers = $this->build_cluster_connection_array();
|
823 |
$parameters['cluster'] = $servers;
|
@@ -956,7 +957,7 @@ class WP_Object_Cache {
|
|
956 |
$params = array_filter( $_client );
|
957 |
|
958 |
if ( $params ) {
|
959 |
-
$connection_string .= '?' . http_build_query( $params,
|
960 |
}
|
961 |
|
962 |
$clients[ $index ] = $connection_string;
|
@@ -968,7 +969,7 @@ class WP_Object_Cache {
|
|
968 |
'host' => $parameters['scheme'] === 'unix' ? $parameters['path'] : $parameters['host'],
|
969 |
'port' => $parameters['port'],
|
970 |
'timeout' => $parameters['timeout'],
|
971 |
-
'persistent' =>
|
972 |
'database' => $parameters['database'],
|
973 |
'password' => isset( $parameters['password'] ) ? $parameters['password'] : null,
|
974 |
];
|
@@ -1056,7 +1057,9 @@ class WP_Object_Cache {
|
|
1056 |
}
|
1057 |
|
1058 |
if ( defined( 'WP_REDIS_CLUSTER' ) ) {
|
1059 |
-
$connectionID =
|
|
|
|
|
1060 |
|
1061 |
$info = $this->determine_client() === 'predis'
|
1062 |
? $this->redis->getClientFor( $connectionID )->info()
|
@@ -1209,7 +1212,7 @@ class WP_Object_Cache {
|
|
1209 |
|
1210 |
$results = array_map( function ( $response ) {
|
1211 |
return (bool) $this->parse_redis_response( $response );
|
1212 |
-
}, $tx->{$method}() );
|
1213 |
|
1214 |
$results = array_combine( $keys, $results );
|
1215 |
|
@@ -1337,7 +1340,7 @@ class WP_Object_Cache {
|
|
1337 |
}
|
1338 |
}
|
1339 |
|
1340 |
-
$exists =
|
1341 |
|
1342 |
if ( (bool) $add === $exists ) {
|
1343 |
return false;
|
@@ -1365,7 +1368,7 @@ class WP_Object_Cache {
|
|
1365 |
|
1366 |
$derived_key = $this->fast_build_key( $san_key, $san_group );
|
1367 |
|
1368 |
-
if (
|
1369 |
unset( $this->cache[ $derived_key ] );
|
1370 |
$result = true;
|
1371 |
}
|
@@ -1454,7 +1457,7 @@ class WP_Object_Cache {
|
|
1454 |
|
1455 |
$results = array_map( function ( $response ) {
|
1456 |
return (bool) $this->parse_redis_response( $response );
|
1457 |
-
}, $tx->{$method}() );
|
1458 |
|
1459 |
$execute_time = microtime( true ) - $start_time;
|
1460 |
} catch ( Exception $exception ) {
|
@@ -1737,7 +1740,7 @@ LUA;
|
|
1737 |
$san_group = $this->sanitize_key_part( $group );
|
1738 |
$derived_key = $this->fast_build_key( $san_key, $san_group );
|
1739 |
|
1740 |
-
if (
|
1741 |
$found = true;
|
1742 |
$this->cache_hits++;
|
1743 |
$value = $this->get_from_internal_cache( $derived_key );
|
@@ -1817,7 +1820,7 @@ LUA;
|
|
1817 |
* @param string $group Optional. Where the cache contents are grouped. Default empty.
|
1818 |
* @param bool $force Optional. Whether to force an update of the local cache
|
1819 |
* from the persistent cache. Default false.
|
1820 |
-
* @return array Array of values organized into groups.
|
1821 |
*/
|
1822 |
public function get_multiple( $keys, $group = 'default', $force = false ) {
|
1823 |
if ( ! is_array( $keys ) ) {
|
@@ -1867,7 +1870,7 @@ LUA;
|
|
1867 |
$remaining_keys = array_filter(
|
1868 |
$keys,
|
1869 |
function ( $key ) use ( $cache ) {
|
1870 |
-
return !
|
1871 |
}
|
1872 |
);
|
1873 |
|
@@ -1876,15 +1879,16 @@ LUA;
|
|
1876 |
}
|
1877 |
|
1878 |
$start_time = microtime( true );
|
|
|
1879 |
|
1880 |
-
|
1881 |
-
$
|
1882 |
-
|
1883 |
-
|
1884 |
-
|
1885 |
-
|
1886 |
-
);
|
1887 |
|
|
|
1888 |
$results = array_combine(
|
1889 |
$remaining_keys,
|
1890 |
$this->redis->mget( $remaining_ids )
|
@@ -1893,7 +1897,10 @@ LUA;
|
|
1893 |
} catch ( Exception $exception ) {
|
1894 |
$this->handle_exception( $exception );
|
1895 |
|
1896 |
-
$
|
|
|
|
|
|
|
1897 |
}
|
1898 |
|
1899 |
$execute_time = microtime( true ) - $start_time;
|
@@ -1917,8 +1924,8 @@ LUA;
|
|
1917 |
* Fires on every cache get multiple request
|
1918 |
*
|
1919 |
* @since 2.0.6
|
1920 |
-
* @param
|
1921 |
-
* @param
|
1922 |
* @param string $group The group value appended to the $key.
|
1923 |
* @param bool $force Whether a forced refetch has taken place rather than relying on the local cache.
|
1924 |
* @param float $execute_time Execution time for the request in seconds.
|
@@ -2099,7 +2106,7 @@ LUA;
|
|
2099 |
|
2100 |
$results = array_map( function ( $response ) {
|
2101 |
return (bool) $this->parse_redis_response( $response );
|
2102 |
-
}, $tx->{$method}() );
|
2103 |
|
2104 |
$results = array_combine( $keys, $results );
|
2105 |
|
@@ -2450,7 +2457,7 @@ LUA;
|
|
2450 |
* @return bool|mixed Value on success; false on failure.
|
2451 |
*/
|
2452 |
public function get_from_internal_cache( $derived_key ) {
|
2453 |
-
if ( !
|
2454 |
return false;
|
2455 |
}
|
2456 |
|
@@ -2472,7 +2479,7 @@ LUA;
|
|
2472 |
return false;
|
2473 |
}
|
2474 |
|
2475 |
-
$this->blog_prefix = $_blog_id;
|
2476 |
|
2477 |
return true;
|
2478 |
}
|
@@ -2500,7 +2507,13 @@ LUA;
|
|
2500 |
* @param array $groups List of groups that are to be ignored.
|
2501 |
*/
|
2502 |
public function add_non_persistent_groups( $groups ) {
|
2503 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
2504 |
|
2505 |
$this->ignored_groups = array_unique( array_merge( $this->ignored_groups, $groups ) );
|
2506 |
$this->cache_group_types();
|
3 |
* Plugin Name: Redis Object Cache Drop-In
|
4 |
* Plugin URI: https://wordpress.org/plugins/redis-cache/
|
5 |
* Description: A persistent object cache backend powered by Redis. Supports Predis, PhpRedis, Relay, replication, sentinels, clustering and WP-CLI.
|
6 |
+
* Version: 2.2.0
|
7 |
* Author: Till Krüss
|
8 |
* Author URI: https://objectcache.pro
|
9 |
* License: GPLv3
|
428 |
/**
|
429 |
* Prefix used for non-global groups.
|
430 |
*
|
431 |
+
* @var int
|
432 |
*/
|
433 |
+
public $blog_prefix = 0;
|
434 |
|
435 |
/**
|
436 |
* Track how many requests were found in cache.
|
514 |
}
|
515 |
|
516 |
if ( defined( 'WP_REDIS_CLUSTER' ) ) {
|
517 |
+
$connectionID = is_string( WP_REDIS_CLUSTER )
|
518 |
+
? WP_REDIS_CLUSTER
|
519 |
+
: current( $this->build_cluster_connection_array() );
|
520 |
|
521 |
+
$this->diagnostics[ 'ping' ] = $client === 'predis'
|
522 |
? $this->redis->getClientFor( $connectionID )->ping()
|
523 |
: $this->redis->ping( $connectionID );
|
524 |
} else {
|
639 |
$this->diagnostics[ 'shards' ] = WP_REDIS_SHARDS;
|
640 |
} elseif ( defined( 'WP_REDIS_CLUSTER' ) ) {
|
641 |
if ( is_string( WP_REDIS_CLUSTER ) ) {
|
642 |
+
$this->redis = new RedisCluster( WP_REDIS_CLUSTER );
|
643 |
} else {
|
644 |
$args = [
|
645 |
'cluster' => $this->build_cluster_connection_array(),
|
653 |
}
|
654 |
|
655 |
$this->redis = new RedisCluster( null, ...array_values( $args ) );
|
656 |
+
$this->diagnostics += $args;
|
657 |
}
|
|
|
|
|
658 |
} else {
|
659 |
$this->redis = new Redis();
|
660 |
|
746 |
|
747 |
if ( strcasecmp( 'unix', $parameters['scheme'] ) === 0 ) {
|
748 |
$args['host'] = $parameters['path'];
|
749 |
+
$args['port'] = -1;
|
750 |
}
|
751 |
|
752 |
$args['read_timeout'] = $parameters['read_timeout'];
|
818 |
} elseif ( defined( 'WP_REDIS_SERVERS' ) ) {
|
819 |
$servers = WP_REDIS_SERVERS;
|
820 |
$parameters['servers'] = $servers;
|
821 |
+
$options['replication'] = 'predis';
|
822 |
} elseif ( defined( 'WP_REDIS_CLUSTER' ) ) {
|
823 |
$servers = $this->build_cluster_connection_array();
|
824 |
$parameters['cluster'] = $servers;
|
957 |
$params = array_filter( $_client );
|
958 |
|
959 |
if ( $params ) {
|
960 |
+
$connection_string .= '?' . http_build_query( $params, '', '&' );
|
961 |
}
|
962 |
|
963 |
$clients[ $index ] = $connection_string;
|
969 |
'host' => $parameters['scheme'] === 'unix' ? $parameters['path'] : $parameters['host'],
|
970 |
'port' => $parameters['port'],
|
971 |
'timeout' => $parameters['timeout'],
|
972 |
+
'persistent' => '',
|
973 |
'database' => $parameters['database'],
|
974 |
'password' => isset( $parameters['password'] ) ? $parameters['password'] : null,
|
975 |
];
|
1057 |
}
|
1058 |
|
1059 |
if ( defined( 'WP_REDIS_CLUSTER' ) ) {
|
1060 |
+
$connectionID = is_string( WP_REDIS_CLUSTER )
|
1061 |
+
? 'SERVER'
|
1062 |
+
: current( $this->build_cluster_connection_array() );
|
1063 |
|
1064 |
$info = $this->determine_client() === 'predis'
|
1065 |
? $this->redis->getClientFor( $connectionID )->info()
|
1212 |
|
1213 |
$results = array_map( function ( $response ) {
|
1214 |
return (bool) $this->parse_redis_response( $response );
|
1215 |
+
}, $tx->{$method}() ?? [] );
|
1216 |
|
1217 |
$results = array_combine( $keys, $results );
|
1218 |
|
1340 |
}
|
1341 |
}
|
1342 |
|
1343 |
+
$exists = array_key_exists( $derived_key, $this->cache );
|
1344 |
|
1345 |
if ( (bool) $add === $exists ) {
|
1346 |
return false;
|
1368 |
|
1369 |
$derived_key = $this->fast_build_key( $san_key, $san_group );
|
1370 |
|
1371 |
+
if ( array_key_exists( $derived_key, $this->cache ) ) {
|
1372 |
unset( $this->cache[ $derived_key ] );
|
1373 |
$result = true;
|
1374 |
}
|
1457 |
|
1458 |
$results = array_map( function ( $response ) {
|
1459 |
return (bool) $this->parse_redis_response( $response );
|
1460 |
+
}, $tx->{$method}() ?? [] );
|
1461 |
|
1462 |
$execute_time = microtime( true ) - $start_time;
|
1463 |
} catch ( Exception $exception ) {
|
1740 |
$san_group = $this->sanitize_key_part( $group );
|
1741 |
$derived_key = $this->fast_build_key( $san_key, $san_group );
|
1742 |
|
1743 |
+
if ( array_key_exists( $derived_key, $this->cache ) && ! $force ) {
|
1744 |
$found = true;
|
1745 |
$this->cache_hits++;
|
1746 |
$value = $this->get_from_internal_cache( $derived_key );
|
1820 |
* @param string $group Optional. Where the cache contents are grouped. Default empty.
|
1821 |
* @param bool $force Optional. Whether to force an update of the local cache
|
1822 |
* from the persistent cache. Default false.
|
1823 |
+
* @return array|false Array of values organized into groups.
|
1824 |
*/
|
1825 |
public function get_multiple( $keys, $group = 'default', $force = false ) {
|
1826 |
if ( ! is_array( $keys ) ) {
|
1870 |
$remaining_keys = array_filter(
|
1871 |
$keys,
|
1872 |
function ( $key ) use ( $cache ) {
|
1873 |
+
return ! array_key_exists( $key, $cache );
|
1874 |
}
|
1875 |
);
|
1876 |
|
1879 |
}
|
1880 |
|
1881 |
$start_time = microtime( true );
|
1882 |
+
$results = [];
|
1883 |
|
1884 |
+
$remaining_ids = array_map(
|
1885 |
+
function ( $key ) use ( $derived_keys ) {
|
1886 |
+
return $derived_keys[ $key ];
|
1887 |
+
},
|
1888 |
+
$remaining_keys
|
1889 |
+
);
|
|
|
1890 |
|
1891 |
+
try {
|
1892 |
$results = array_combine(
|
1893 |
$remaining_keys,
|
1894 |
$this->redis->mget( $remaining_ids )
|
1897 |
} catch ( Exception $exception ) {
|
1898 |
$this->handle_exception( $exception );
|
1899 |
|
1900 |
+
$results = array_combine(
|
1901 |
+
$remaining_keys,
|
1902 |
+
array_fill( 0, count( $remaining_ids ), false )
|
1903 |
+
);
|
1904 |
}
|
1905 |
|
1906 |
$execute_time = microtime( true ) - $start_time;
|
1924 |
* Fires on every cache get multiple request
|
1925 |
*
|
1926 |
* @since 2.0.6
|
1927 |
+
* @param array $keys Array of keys under which the cache contents are stored.
|
1928 |
+
* @param array $cache Cache items.
|
1929 |
* @param string $group The group value appended to the $key.
|
1930 |
* @param bool $force Whether a forced refetch has taken place rather than relying on the local cache.
|
1931 |
* @param float $execute_time Execution time for the request in seconds.
|
2106 |
|
2107 |
$results = array_map( function ( $response ) {
|
2108 |
return (bool) $this->parse_redis_response( $response );
|
2109 |
+
}, $tx->{$method}() ?? [] );
|
2110 |
|
2111 |
$results = array_combine( $keys, $results );
|
2112 |
|
2457 |
* @return bool|mixed Value on success; false on failure.
|
2458 |
*/
|
2459 |
public function get_from_internal_cache( $derived_key ) {
|
2460 |
+
if ( ! array_key_exists( $derived_key, $this->cache ) ) {
|
2461 |
return false;
|
2462 |
}
|
2463 |
|
2479 |
return false;
|
2480 |
}
|
2481 |
|
2482 |
+
$this->blog_prefix = (int) $_blog_id;
|
2483 |
|
2484 |
return true;
|
2485 |
}
|
2507 |
* @param array $groups List of groups that are to be ignored.
|
2508 |
*/
|
2509 |
public function add_non_persistent_groups( $groups ) {
|
2510 |
+
/**
|
2511 |
+
* Filters list of groups to be added to {@see self::$ignored_groups}
|
2512 |
+
*
|
2513 |
+
* @since 2.1.7
|
2514 |
+
* @param string[] $groups List of groups to be ignored.
|
2515 |
+
*/
|
2516 |
+
$groups = apply_filters( 'redis_cache_add_non_persistent_groups', (array) $groups );
|
2517 |
|
2518 |
$this->ignored_groups = array_unique( array_merge( $this->ignored_groups, $groups ) );
|
2519 |
$this->cache_group_types();
|
includes/ui/class-tab.php
CHANGED
@@ -179,8 +179,8 @@ class Tab {
|
|
179 |
* Filters the tab's nav id
|
180 |
*
|
181 |
* @since 2.0.12
|
182 |
-
* @param string $nav_id
|
183 |
-
* @param Tab $
|
184 |
*/
|
185 |
return apply_filters( 'roc_tab_nav_id', $nav_id, $this );
|
186 |
}
|
@@ -207,8 +207,8 @@ class Tab {
|
|
207 |
* Filters the current tab's nav element css classes
|
208 |
*
|
209 |
* @since 2.0.12
|
210 |
-
* @param array $classes
|
211 |
-
* @param Tab $
|
212 |
*/
|
213 |
return implode( ' ', apply_filters( 'roc_tab_nav_classes', $classes, $this ) );
|
214 |
}
|
@@ -225,8 +225,8 @@ class Tab {
|
|
225 |
* Filters the tab's id
|
226 |
*
|
227 |
* @since 2.0.12
|
228 |
-
* @param string $tab_id
|
229 |
-
* @param Tab $
|
230 |
*/
|
231 |
return apply_filters( 'roc_tab_id', $tab_id, $this );
|
232 |
}
|
@@ -250,8 +250,8 @@ class Tab {
|
|
250 |
* Filters the current tab's css classes
|
251 |
*
|
252 |
* @since 2.0.12
|
253 |
-
* @param array $classes
|
254 |
-
* @param Tab $
|
255 |
*/
|
256 |
return implode( ' ', apply_filters( 'roc_tab_classes', $classes, $this ) );
|
257 |
}
|
179 |
* Filters the tab's nav id
|
180 |
*
|
181 |
* @since 2.0.12
|
182 |
+
* @param string $nav_id The id attribute of the current tab's nav element.
|
183 |
+
* @param Tab $instance The current tab.
|
184 |
*/
|
185 |
return apply_filters( 'roc_tab_nav_id', $nav_id, $this );
|
186 |
}
|
207 |
* Filters the current tab's nav element css classes
|
208 |
*
|
209 |
* @since 2.0.12
|
210 |
+
* @param array $classes Array of css classes.
|
211 |
+
* @param Tab $instance The current tab.
|
212 |
*/
|
213 |
return implode( ' ', apply_filters( 'roc_tab_nav_classes', $classes, $this ) );
|
214 |
}
|
225 |
* Filters the tab's id
|
226 |
*
|
227 |
* @since 2.0.12
|
228 |
+
* @param string $tab_id The id attribute of the current tab element.
|
229 |
+
* @param Tab $instance The current tab.
|
230 |
*/
|
231 |
return apply_filters( 'roc_tab_id', $tab_id, $this );
|
232 |
}
|
250 |
* Filters the current tab's css classes
|
251 |
*
|
252 |
* @since 2.0.12
|
253 |
+
* @param array $classes Array of css classes.
|
254 |
+
* @param Tab $instance The current tab.
|
255 |
*/
|
256 |
return implode( ' ', apply_filters( 'roc_tab_classes', $classes, $this ) );
|
257 |
}
|
includes/ui/tabs/overview.php
CHANGED
@@ -7,6 +7,7 @@
|
|
7 |
|
8 |
defined( '\\ABSPATH' ) || exit;
|
9 |
|
|
|
10 |
$status = $roc->get_redis_status();
|
11 |
$redis_client = $roc->get_redis_client_name();
|
12 |
$redis_prefix = $roc->get_redis_prefix();
|
7 |
|
8 |
defined( '\\ABSPATH' ) || exit;
|
9 |
|
10 |
+
/** @var \Rhubarb\RedisCache\Plugin $roc */
|
11 |
$status = $roc->get_redis_status();
|
12 |
$redis_client = $roc->get_redis_client_name();
|
13 |
$redis_prefix = $roc->get_redis_prefix();
|
languages/redis-cache.pot
CHANGED
@@ -2,14 +2,14 @@
|
|
2 |
# This file is distributed under the GPLv3.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
-
"Project-Id-Version: Redis Object Cache 2.
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/redis-cache\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
-
"POT-Creation-Date: 2022-
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.6.0\n"
|
15 |
"X-Domain: redis-cache\n"
|
@@ -42,7 +42,7 @@ msgid "Redis"
|
|
42 |
msgstr ""
|
43 |
|
44 |
#: includes/class-plugin.php:178
|
45 |
-
#: includes/ui/tabs/overview.php:
|
46 |
msgid "Overview"
|
47 |
msgstr ""
|
48 |
|
@@ -54,174 +54,174 @@ msgstr ""
|
|
54 |
msgid "Diagnostics"
|
55 |
msgstr ""
|
56 |
|
57 |
-
#: includes/class-plugin.php:
|
58 |
#: includes/ui/widget.php:36
|
59 |
msgid "Settings"
|
60 |
msgstr ""
|
61 |
|
62 |
-
#: includes/class-plugin.php:
|
63 |
msgctxt "verb"
|
64 |
msgid "Upgrade to Pro"
|
65 |
msgstr ""
|
66 |
|
67 |
-
#: includes/class-plugin.php:
|
68 |
#: includes/ui/tabs/metrics.php:17
|
69 |
#: includes/ui/widget.php:16
|
70 |
msgid "Time"
|
71 |
msgstr ""
|
72 |
|
73 |
-
#: includes/class-plugin.php:
|
74 |
#: includes/ui/tabs/metrics.php:22
|
75 |
#: includes/ui/widget.php:21
|
76 |
msgid "Bytes"
|
77 |
msgstr ""
|
78 |
|
79 |
-
#: includes/class-plugin.php:
|
80 |
#: includes/ui/tabs/metrics.php:27
|
81 |
#: includes/ui/widget.php:26
|
82 |
msgid "Ratio"
|
83 |
msgstr ""
|
84 |
|
85 |
-
#: includes/class-plugin.php:
|
86 |
#: includes/ui/tabs/metrics.php:32
|
87 |
#: includes/ui/widget.php:31
|
88 |
msgid "Calls"
|
89 |
msgstr ""
|
90 |
|
91 |
-
#: includes/class-plugin.php:
|
92 |
msgid "Not enough data collected, yet."
|
93 |
msgstr ""
|
94 |
|
95 |
-
#: includes/class-plugin.php:
|
96 |
msgid "Enable object cache to collect data."
|
97 |
msgstr ""
|
98 |
|
99 |
-
#: includes/class-plugin.php:
|
100 |
#: includes/class-qm-collector.php:66
|
101 |
msgid "Disabled"
|
102 |
msgstr ""
|
103 |
|
104 |
-
#: includes/class-plugin.php:
|
105 |
msgid "Drop-in not installed"
|
106 |
msgstr ""
|
107 |
|
108 |
-
#: includes/class-plugin.php:
|
109 |
msgid "Drop-in is invalid"
|
110 |
msgstr ""
|
111 |
|
112 |
-
#: includes/class-plugin.php:
|
113 |
msgid "Connected"
|
114 |
msgstr ""
|
115 |
|
116 |
-
#: includes/class-plugin.php:
|
117 |
msgid "Not connected"
|
118 |
msgstr ""
|
119 |
|
120 |
-
#: includes/class-plugin.php:
|
121 |
-
#: includes/ui/tabs/overview.php:
|
122 |
msgid "Unknown"
|
123 |
msgstr ""
|
124 |
|
125 |
#. translators: %s = Action link to update the drop-in.
|
126 |
-
#: includes/class-plugin.php:
|
127 |
msgid "The Redis object cache drop-in is outdated. Please <a href=\"%s\">update the drop-in</a>."
|
128 |
msgstr ""
|
129 |
|
130 |
#. translators: %s = Link to settings page.
|
131 |
-
#: includes/class-plugin.php:
|
132 |
msgid "A foreign object cache drop-in was found. To use Redis for object caching, please <a href=\"%s\">enable the drop-in</a>."
|
133 |
msgstr ""
|
134 |
|
135 |
-
#: includes/class-plugin.php:
|
136 |
msgid "Object cache flushed."
|
137 |
msgstr ""
|
138 |
|
139 |
-
#: includes/class-plugin.php:
|
140 |
msgid "Object cache could not be flushed."
|
141 |
msgstr ""
|
142 |
|
143 |
-
#: includes/class-plugin.php:
|
144 |
#: includes/cli/class-commands.php:74
|
145 |
msgid "Object cache enabled."
|
146 |
msgstr ""
|
147 |
|
148 |
-
#: includes/class-plugin.php:
|
149 |
#: includes/cli/class-commands.php:76
|
150 |
msgid "Object cache could not be enabled."
|
151 |
msgstr ""
|
152 |
|
153 |
-
#: includes/class-plugin.php:
|
154 |
#: includes/cli/class-commands.php:113
|
155 |
msgid "Object cache disabled."
|
156 |
msgstr ""
|
157 |
|
158 |
-
#: includes/class-plugin.php:
|
159 |
#: includes/cli/class-commands.php:115
|
160 |
msgid "Object cache could not be disabled."
|
161 |
msgstr ""
|
162 |
|
163 |
-
#: includes/class-plugin.php:
|
164 |
#: includes/cli/class-commands.php:147
|
165 |
msgid "Updated object cache drop-in and enabled Redis object cache."
|
166 |
msgstr ""
|
167 |
|
168 |
-
#: includes/class-plugin.php:
|
169 |
#: includes/cli/class-commands.php:149
|
170 |
msgid "Object cache drop-in could not be updated."
|
171 |
msgstr ""
|
172 |
|
173 |
-
#: includes/class-plugin.php:
|
174 |
msgid "Object Cache Pro!"
|
175 |
msgstr ""
|
176 |
|
177 |
#. translators: %s = Link to the plugin setting screen.
|
178 |
-
#: includes/class-plugin.php:
|
179 |
msgid "A <u>business class</u> object cache backend. Truly reliable, highly-optimized and fully customizable, with a <u>dedicated engineer</u> when you most need it. <a href=\"%s\">Learn more »</a>"
|
180 |
msgstr ""
|
181 |
|
182 |
-
#: includes/class-plugin.php:
|
183 |
msgid "Object Cache Pro + WooCommerce = ❤️"
|
184 |
msgstr ""
|
185 |
|
186 |
#. translators: %s = Link to the plugin's settings screen.
|
187 |
-
#: includes/class-plugin.php:
|
188 |
msgid "Object Cache Pro is a <u>business class</u> object cache that’s highly-optimized for WooCommerce to provide true reliability, peace of mind and faster load times for your store. <a style=\"color: #bb77ae;\" href=\"%s\">Learn more »</a>"
|
189 |
msgstr ""
|
190 |
|
191 |
#. translators: %1$d = number of objects. %2$s = human-readable size of cache. %3$s = name of the used client.
|
192 |
-
#: includes/class-plugin.php:
|
193 |
msgid "Retrieved %1$d objects (%2$s) from Redis using %3$s."
|
194 |
msgstr ""
|
195 |
|
196 |
-
#: includes/class-plugin.php:
|
197 |
msgid "Could not initialize filesystem."
|
198 |
msgstr ""
|
199 |
|
200 |
-
#: includes/class-plugin.php:
|
201 |
msgid "Object cache file doesn’t exist."
|
202 |
msgstr ""
|
203 |
|
204 |
-
#: includes/class-plugin.php:
|
205 |
msgid "Test file exists, but couldn’t be deleted."
|
206 |
msgstr ""
|
207 |
|
208 |
-
#: includes/class-plugin.php:
|
209 |
msgid "Content directory is not writable."
|
210 |
msgstr ""
|
211 |
|
212 |
-
#: includes/class-plugin.php:
|
213 |
msgid "Failed to copy test file."
|
214 |
msgstr ""
|
215 |
|
216 |
-
#: includes/class-plugin.php:
|
217 |
msgid "Copied test file doesn’t exist."
|
218 |
msgstr ""
|
219 |
|
220 |
-
#: includes/class-plugin.php:
|
221 |
msgid "Couldn’t verify test file contents."
|
222 |
msgstr ""
|
223 |
|
224 |
-
#: includes/class-plugin.php:
|
225 |
msgid "Copied test file couldn’t be deleted."
|
226 |
msgstr ""
|
227 |
|
@@ -230,7 +230,7 @@ msgid "Object Cache"
|
|
230 |
msgstr ""
|
231 |
|
232 |
#: includes/class-qm-collector.php:66
|
233 |
-
#: includes/ui/tabs/overview.php:
|
234 |
msgid "Yes"
|
235 |
msgstr ""
|
236 |
|
@@ -394,133 +394,133 @@ msgstr ""
|
|
394 |
msgid "The total amount of commands sent to Redis."
|
395 |
msgstr ""
|
396 |
|
397 |
-
#: includes/ui/tabs/overview.php:
|
398 |
msgid "Status:"
|
399 |
msgstr ""
|
400 |
|
401 |
-
#: includes/ui/tabs/overview.php:
|
402 |
msgid "Drop-in:"
|
403 |
msgstr ""
|
404 |
|
405 |
-
#: includes/ui/tabs/overview.php:
|
406 |
msgid "Not installed"
|
407 |
msgstr ""
|
408 |
|
409 |
-
#: includes/ui/tabs/overview.php:
|
410 |
msgid "Outdated"
|
411 |
msgstr ""
|
412 |
|
413 |
-
#: includes/ui/tabs/overview.php:
|
414 |
msgid "Valid"
|
415 |
msgstr ""
|
416 |
|
417 |
-
#: includes/ui/tabs/overview.php:
|
418 |
msgid "Invalid"
|
419 |
msgstr ""
|
420 |
|
421 |
-
#: includes/ui/tabs/overview.php:
|
422 |
msgid "Filesystem:"
|
423 |
msgstr ""
|
424 |
|
425 |
-
#: includes/ui/tabs/overview.php:
|
426 |
msgid "Not writeable"
|
427 |
msgstr ""
|
428 |
|
429 |
-
#: includes/ui/tabs/overview.php:
|
430 |
msgid "Writeable"
|
431 |
msgstr ""
|
432 |
|
433 |
-
#: includes/ui/tabs/overview.php:
|
434 |
msgid "Disabled:"
|
435 |
msgstr ""
|
436 |
|
437 |
-
#: includes/ui/tabs/overview.php:
|
438 |
msgid "Key Prefix:"
|
439 |
msgstr ""
|
440 |
|
441 |
-
#: includes/ui/tabs/overview.php:
|
442 |
msgid "Max. TTL:"
|
443 |
msgstr ""
|
444 |
|
445 |
-
#: includes/ui/tabs/overview.php:
|
446 |
msgid "This doesn’t appear to be a valid number."
|
447 |
msgstr ""
|
448 |
|
449 |
-
#: includes/ui/tabs/overview.php:
|
450 |
msgid "Connection"
|
451 |
msgstr ""
|
452 |
|
453 |
-
#: includes/ui/tabs/overview.php:
|
454 |
msgid "Client:"
|
455 |
msgstr ""
|
456 |
|
457 |
-
#: includes/ui/tabs/overview.php:
|
458 |
msgid "Host:"
|
459 |
msgstr ""
|
460 |
|
461 |
-
#: includes/ui/tabs/overview.php:
|
462 |
msgid "Cluster:"
|
463 |
msgstr ""
|
464 |
|
465 |
-
#: includes/ui/tabs/overview.php:
|
466 |
msgid "Shards:"
|
467 |
msgstr ""
|
468 |
|
469 |
-
#: includes/ui/tabs/overview.php:
|
470 |
msgid "Servers:"
|
471 |
msgstr ""
|
472 |
|
473 |
-
#: includes/ui/tabs/overview.php:
|
474 |
msgid "Port:"
|
475 |
msgstr ""
|
476 |
|
477 |
-
#: includes/ui/tabs/overview.php:
|
478 |
msgid "Username:"
|
479 |
msgstr ""
|
480 |
|
481 |
-
#: includes/ui/tabs/overview.php:
|
482 |
msgid "Password:"
|
483 |
msgstr ""
|
484 |
|
485 |
-
#: includes/ui/tabs/overview.php:
|
486 |
msgid "Database:"
|
487 |
msgstr ""
|
488 |
|
489 |
-
#: includes/ui/tabs/overview.php:
|
490 |
msgid "Connection Timeout:"
|
491 |
msgstr ""
|
492 |
|
493 |
#. translators: %s = Redis connection/read timeout in seconds.
|
494 |
-
#: includes/ui/tabs/overview.php:
|
495 |
-
#: includes/ui/tabs/overview.php:
|
496 |
msgid "%ss"
|
497 |
msgstr ""
|
498 |
|
499 |
-
#: includes/ui/tabs/overview.php:
|
500 |
msgid "Read Timeout:"
|
501 |
msgstr ""
|
502 |
|
503 |
-
#: includes/ui/tabs/overview.php:
|
504 |
msgid "Retry Interval:"
|
505 |
msgstr ""
|
506 |
|
507 |
#. translators: %s = Redis retry interval in milliseconds.
|
508 |
-
#: includes/ui/tabs/overview.php:
|
509 |
msgid "%sms"
|
510 |
msgstr ""
|
511 |
|
512 |
-
#: includes/ui/tabs/overview.php:
|
513 |
msgid "Redis Version:"
|
514 |
msgstr ""
|
515 |
|
516 |
-
#: includes/ui/tabs/overview.php:
|
517 |
msgid "Flush Cache"
|
518 |
msgstr ""
|
519 |
|
520 |
-
#: includes/ui/tabs/overview.php:
|
521 |
msgid "Disable Object Cache"
|
522 |
msgstr ""
|
523 |
|
524 |
-
#: includes/ui/tabs/overview.php:
|
525 |
msgid "Enable Object Cache"
|
526 |
msgstr ""
|
2 |
# This file is distributed under the GPLv3.
|
3 |
msgid ""
|
4 |
msgstr ""
|
5 |
+
"Project-Id-Version: Redis Object Cache 2.2.0\n"
|
6 |
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/redis-cache\n"
|
7 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
8 |
"Language-Team: LANGUAGE <LL@li.org>\n"
|
9 |
"MIME-Version: 1.0\n"
|
10 |
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"POT-Creation-Date: 2022-08-26T19:11:13+00:00\n"
|
13 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
14 |
"X-Generator: WP-CLI 2.6.0\n"
|
15 |
"X-Domain: redis-cache\n"
|
42 |
msgstr ""
|
43 |
|
44 |
#: includes/class-plugin.php:178
|
45 |
+
#: includes/ui/tabs/overview.php:22
|
46 |
msgid "Overview"
|
47 |
msgstr ""
|
48 |
|
54 |
msgid "Diagnostics"
|
55 |
msgstr ""
|
56 |
|
57 |
+
#: includes/class-plugin.php:237
|
58 |
#: includes/ui/widget.php:36
|
59 |
msgid "Settings"
|
60 |
msgstr ""
|
61 |
|
62 |
+
#: includes/class-plugin.php:258
|
63 |
msgctxt "verb"
|
64 |
msgid "Upgrade to Pro"
|
65 |
msgstr ""
|
66 |
|
67 |
+
#: includes/class-plugin.php:332
|
68 |
#: includes/ui/tabs/metrics.php:17
|
69 |
#: includes/ui/widget.php:16
|
70 |
msgid "Time"
|
71 |
msgstr ""
|
72 |
|
73 |
+
#: includes/class-plugin.php:333
|
74 |
#: includes/ui/tabs/metrics.php:22
|
75 |
#: includes/ui/widget.php:21
|
76 |
msgid "Bytes"
|
77 |
msgstr ""
|
78 |
|
79 |
+
#: includes/class-plugin.php:334
|
80 |
#: includes/ui/tabs/metrics.php:27
|
81 |
#: includes/ui/widget.php:26
|
82 |
msgid "Ratio"
|
83 |
msgstr ""
|
84 |
|
85 |
+
#: includes/class-plugin.php:335
|
86 |
#: includes/ui/tabs/metrics.php:32
|
87 |
#: includes/ui/widget.php:31
|
88 |
msgid "Calls"
|
89 |
msgstr ""
|
90 |
|
91 |
+
#: includes/class-plugin.php:336
|
92 |
msgid "Not enough data collected, yet."
|
93 |
msgstr ""
|
94 |
|
95 |
+
#: includes/class-plugin.php:337
|
96 |
msgid "Enable object cache to collect data."
|
97 |
msgstr ""
|
98 |
|
99 |
+
#: includes/class-plugin.php:483
|
100 |
#: includes/class-qm-collector.php:66
|
101 |
msgid "Disabled"
|
102 |
msgstr ""
|
103 |
|
104 |
+
#: includes/class-plugin.php:487
|
105 |
msgid "Drop-in not installed"
|
106 |
msgstr ""
|
107 |
|
108 |
+
#: includes/class-plugin.php:491
|
109 |
msgid "Drop-in is invalid"
|
110 |
msgstr ""
|
111 |
|
112 |
+
#: includes/class-plugin.php:496
|
113 |
msgid "Connected"
|
114 |
msgstr ""
|
115 |
|
116 |
+
#: includes/class-plugin.php:497
|
117 |
msgid "Not connected"
|
118 |
msgstr ""
|
119 |
|
120 |
+
#: includes/class-plugin.php:500
|
121 |
+
#: includes/ui/tabs/overview.php:270
|
122 |
msgid "Unknown"
|
123 |
msgstr ""
|
124 |
|
125 |
#. translators: %s = Action link to update the drop-in.
|
126 |
+
#: includes/class-plugin.php:624
|
127 |
msgid "The Redis object cache drop-in is outdated. Please <a href=\"%s\">update the drop-in</a>."
|
128 |
msgstr ""
|
129 |
|
130 |
#. translators: %s = Link to settings page.
|
131 |
+
#: includes/class-plugin.php:631
|
132 |
msgid "A foreign object cache drop-in was found. To use Redis for object caching, please <a href=\"%s\">enable the drop-in</a>."
|
133 |
msgstr ""
|
134 |
|
135 |
+
#: includes/class-plugin.php:669
|
136 |
msgid "Object cache flushed."
|
137 |
msgstr ""
|
138 |
|
139 |
+
#: includes/class-plugin.php:675
|
140 |
msgid "Object cache could not be flushed."
|
141 |
msgstr ""
|
142 |
|
143 |
+
#: includes/class-plugin.php:703
|
144 |
#: includes/cli/class-commands.php:74
|
145 |
msgid "Object cache enabled."
|
146 |
msgstr ""
|
147 |
|
148 |
+
#: includes/class-plugin.php:709
|
149 |
#: includes/cli/class-commands.php:76
|
150 |
msgid "Object cache could not be enabled."
|
151 |
msgstr ""
|
152 |
|
153 |
+
#: includes/class-plugin.php:729
|
154 |
#: includes/cli/class-commands.php:113
|
155 |
msgid "Object cache disabled."
|
156 |
msgstr ""
|
157 |
|
158 |
+
#: includes/class-plugin.php:735
|
159 |
#: includes/cli/class-commands.php:115
|
160 |
msgid "Object cache could not be disabled."
|
161 |
msgstr ""
|
162 |
|
163 |
+
#: includes/class-plugin.php:760
|
164 |
#: includes/cli/class-commands.php:147
|
165 |
msgid "Updated object cache drop-in and enabled Redis object cache."
|
166 |
msgstr ""
|
167 |
|
168 |
+
#: includes/class-plugin.php:766
|
169 |
#: includes/cli/class-commands.php:149
|
170 |
msgid "Object cache drop-in could not be updated."
|
171 |
msgstr ""
|
172 |
|
173 |
+
#: includes/class-plugin.php:833
|
174 |
msgid "Object Cache Pro!"
|
175 |
msgstr ""
|
176 |
|
177 |
#. translators: %s = Link to the plugin setting screen.
|
178 |
+
#: includes/class-plugin.php:836
|
179 |
msgid "A <u>business class</u> object cache backend. Truly reliable, highly-optimized and fully customizable, with a <u>dedicated engineer</u> when you most need it. <a href=\"%s\">Learn more »</a>"
|
180 |
msgstr ""
|
181 |
|
182 |
+
#: includes/class-plugin.php:873
|
183 |
msgid "Object Cache Pro + WooCommerce = ❤️"
|
184 |
msgstr ""
|
185 |
|
186 |
#. translators: %s = Link to the plugin's settings screen.
|
187 |
+
#: includes/class-plugin.php:876
|
188 |
msgid "Object Cache Pro is a <u>business class</u> object cache that’s highly-optimized for WooCommerce to provide true reliability, peace of mind and faster load times for your store. <a style=\"color: #bb77ae;\" href=\"%s\">Learn more »</a>"
|
189 |
msgstr ""
|
190 |
|
191 |
#. translators: %1$d = number of objects. %2$s = human-readable size of cache. %3$s = name of the used client.
|
192 |
+
#: includes/class-plugin.php:942
|
193 |
msgid "Retrieved %1$d objects (%2$s) from Redis using %3$s."
|
194 |
msgstr ""
|
195 |
|
196 |
+
#: includes/class-plugin.php:999
|
197 |
msgid "Could not initialize filesystem."
|
198 |
msgstr ""
|
199 |
|
200 |
+
#: includes/class-plugin.php:1006
|
201 |
msgid "Object cache file doesn’t exist."
|
202 |
msgstr ""
|
203 |
|
204 |
+
#: includes/class-plugin.php:1011
|
205 |
msgid "Test file exists, but couldn’t be deleted."
|
206 |
msgstr ""
|
207 |
|
208 |
+
#: includes/class-plugin.php:1016
|
209 |
msgid "Content directory is not writable."
|
210 |
msgstr ""
|
211 |
|
212 |
+
#: includes/class-plugin.php:1020
|
213 |
msgid "Failed to copy test file."
|
214 |
msgstr ""
|
215 |
|
216 |
+
#: includes/class-plugin.php:1024
|
217 |
msgid "Copied test file doesn’t exist."
|
218 |
msgstr ""
|
219 |
|
220 |
+
#: includes/class-plugin.php:1030
|
221 |
msgid "Couldn’t verify test file contents."
|
222 |
msgstr ""
|
223 |
|
224 |
+
#: includes/class-plugin.php:1034
|
225 |
msgid "Copied test file couldn’t be deleted."
|
226 |
msgstr ""
|
227 |
|
230 |
msgstr ""
|
231 |
|
232 |
#: includes/class-qm-collector.php:66
|
233 |
+
#: includes/ui/tabs/overview.php:92
|
234 |
msgid "Yes"
|
235 |
msgstr ""
|
236 |
|
394 |
msgid "The total amount of commands sent to Redis."
|
395 |
msgstr ""
|
396 |
|
397 |
+
#: includes/ui/tabs/overview.php:28
|
398 |
msgid "Status:"
|
399 |
msgstr ""
|
400 |
|
401 |
+
#: includes/ui/tabs/overview.php:45
|
402 |
msgid "Drop-in:"
|
403 |
msgstr ""
|
404 |
|
405 |
+
#: includes/ui/tabs/overview.php:50
|
406 |
msgid "Not installed"
|
407 |
msgstr ""
|
408 |
|
409 |
+
#: includes/ui/tabs/overview.php:55
|
410 |
msgid "Outdated"
|
411 |
msgstr ""
|
412 |
|
413 |
+
#: includes/ui/tabs/overview.php:60
|
414 |
msgid "Valid"
|
415 |
msgstr ""
|
416 |
|
417 |
+
#: includes/ui/tabs/overview.php:65
|
418 |
msgid "Invalid"
|
419 |
msgstr ""
|
420 |
|
421 |
+
#: includes/ui/tabs/overview.php:72
|
422 |
msgid "Filesystem:"
|
423 |
msgstr ""
|
424 |
|
425 |
+
#: includes/ui/tabs/overview.php:77
|
426 |
msgid "Not writeable"
|
427 |
msgstr ""
|
428 |
|
429 |
+
#: includes/ui/tabs/overview.php:82
|
430 |
msgid "Writeable"
|
431 |
msgstr ""
|
432 |
|
433 |
+
#: includes/ui/tabs/overview.php:90
|
434 |
msgid "Disabled:"
|
435 |
msgstr ""
|
436 |
|
437 |
+
#: includes/ui/tabs/overview.php:99
|
438 |
msgid "Key Prefix:"
|
439 |
msgstr ""
|
440 |
|
441 |
+
#: includes/ui/tabs/overview.php:108
|
442 |
msgid "Max. TTL:"
|
443 |
msgstr ""
|
444 |
|
445 |
+
#: includes/ui/tabs/overview.php:114
|
446 |
msgid "This doesn’t appear to be a valid number."
|
447 |
msgstr ""
|
448 |
|
449 |
+
#: includes/ui/tabs/overview.php:126
|
450 |
msgid "Connection"
|
451 |
msgstr ""
|
452 |
|
453 |
+
#: includes/ui/tabs/overview.php:133
|
454 |
msgid "Client:"
|
455 |
msgstr ""
|
456 |
|
457 |
+
#: includes/ui/tabs/overview.php:142
|
458 |
msgid "Host:"
|
459 |
msgstr ""
|
460 |
|
461 |
+
#: includes/ui/tabs/overview.php:149
|
462 |
msgid "Cluster:"
|
463 |
msgstr ""
|
464 |
|
465 |
+
#: includes/ui/tabs/overview.php:162
|
466 |
msgid "Shards:"
|
467 |
msgstr ""
|
468 |
|
469 |
+
#: includes/ui/tabs/overview.php:175
|
470 |
msgid "Servers:"
|
471 |
msgstr ""
|
472 |
|
473 |
+
#: includes/ui/tabs/overview.php:188
|
474 |
msgid "Port:"
|
475 |
msgstr ""
|
476 |
|
477 |
+
#: includes/ui/tabs/overview.php:195
|
478 |
msgid "Username:"
|
479 |
msgstr ""
|
480 |
|
481 |
+
#: includes/ui/tabs/overview.php:202
|
482 |
msgid "Password:"
|
483 |
msgstr ""
|
484 |
|
485 |
+
#: includes/ui/tabs/overview.php:211
|
486 |
msgid "Database:"
|
487 |
msgstr ""
|
488 |
|
489 |
+
#: includes/ui/tabs/overview.php:218
|
490 |
msgid "Connection Timeout:"
|
491 |
msgstr ""
|
492 |
|
493 |
#. translators: %s = Redis connection/read timeout in seconds.
|
494 |
+
#: includes/ui/tabs/overview.php:224
|
495 |
+
#: includes/ui/tabs/overview.php:241
|
496 |
msgid "%ss"
|
497 |
msgstr ""
|
498 |
|
499 |
+
#: includes/ui/tabs/overview.php:235
|
500 |
msgid "Read Timeout:"
|
501 |
msgstr ""
|
502 |
|
503 |
+
#: includes/ui/tabs/overview.php:252
|
504 |
msgid "Retry Interval:"
|
505 |
msgstr ""
|
506 |
|
507 |
#. translators: %s = Redis retry interval in milliseconds.
|
508 |
+
#: includes/ui/tabs/overview.php:258
|
509 |
msgid "%sms"
|
510 |
msgstr ""
|
511 |
|
512 |
+
#: includes/ui/tabs/overview.php:269
|
513 |
msgid "Redis Version:"
|
514 |
msgstr ""
|
515 |
|
516 |
+
#: includes/ui/tabs/overview.php:282
|
517 |
msgid "Flush Cache"
|
518 |
msgstr ""
|
519 |
|
520 |
+
#: includes/ui/tabs/overview.php:288
|
521 |
msgid "Disable Object Cache"
|
522 |
msgstr ""
|
523 |
|
524 |
+
#: includes/ui/tabs/overview.php:292
|
525 |
msgid "Enable Object Cache"
|
526 |
msgstr ""
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Tags: redis, predis, phpredis, credis, relay, caching, cache, object cache, perf
|
|
5 |
Requires at least: 3.3
|
6 |
Tested up to: 6.0
|
7 |
Requires PHP: 7.2
|
8 |
-
Stable tag: 2.
|
9 |
License: GPLv3
|
10 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
11 |
|
@@ -83,6 +83,15 @@ To see a list of all available WP-CLI commands, please see the [WP CLI commands
|
|
83 |
|
84 |
== Changelog ==
|
85 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86 |
= 2.1.6 =
|
87 |
|
88 |
- Fixed SVN discrepancies
|
@@ -596,6 +605,6 @@ Since Predis isn't maintained any longer, it's highly recommended to switch over
|
|
596 |
|
597 |
== Upgrade Notice ==
|
598 |
|
599 |
-
= 2.
|
600 |
|
601 |
Bumped PHP requirement to 7.2, updated Predis to v2.0 and deprecated Credis and HHVM clients.
|
5 |
Requires at least: 3.3
|
6 |
Tested up to: 6.0
|
7 |
Requires PHP: 7.2
|
8 |
+
Stable tag: 2.2.0
|
9 |
License: GPLv3
|
10 |
License URI: http://www.gnu.org/licenses/gpl-3.0.html
|
11 |
|
83 |
|
84 |
== Changelog ==
|
85 |
|
86 |
+
= 2.2.0 =
|
87 |
+
|
88 |
+
- Added `redis_cache_add_non_persistent_groups` filter
|
89 |
+
- Fixed `wp_add_dashboard_widget` parameters
|
90 |
+
- Fixed `WP_REDIS_SERVERS` replication issue with Predis v2.0
|
91 |
+
- Fixed `WP_REDIS_CLUSTER` string support
|
92 |
+
- Fixed issue when `MGET` fails in `get_multiple()` call
|
93 |
+
- Fixed several warnings in the event of pipeline failures
|
94 |
+
|
95 |
= 2.1.6 =
|
96 |
|
97 |
- Fixed SVN discrepancies
|
605 |
|
606 |
== Upgrade Notice ==
|
607 |
|
608 |
+
= 2.2.0 =
|
609 |
|
610 |
Bumped PHP requirement to 7.2, updated Predis to v2.0 and deprecated Credis and HHVM clients.
|
redis-cache.php
CHANGED
@@ -3,7 +3,7 @@
|
|
3 |
* Plugin Name: Redis Object Cache
|
4 |
* Plugin URI: https://wordpress.org/plugins/redis-cache/
|
5 |
* Description: A persistent object cache backend powered by Redis. Supports Predis, PhpRedis, Relay, replication, sentinels, clustering and WP-CLI.
|
6 |
-
* Version: 2.
|
7 |
* Text Domain: redis-cache
|
8 |
* Domain Path: /languages
|
9 |
* Network: true
|
3 |
* Plugin Name: Redis Object Cache
|
4 |
* Plugin URI: https://wordpress.org/plugins/redis-cache/
|
5 |
* Description: A persistent object cache backend powered by Redis. Supports Predis, PhpRedis, Relay, replication, sentinels, clustering and WP-CLI.
|
6 |
+
* Version: 2.2.0
|
7 |
* Text Domain: redis-cache
|
8 |
* Domain Path: /languages
|
9 |
* Network: true
|