Resource icon

Unmaintained Zend Redis Cache 1.6.0

No permission to download
  • Support zstd compression
  • New retry_reads_on_master option, when a read to the slave-redis instance fails (ie due to the redis instance still loading data), reads will fail-back to the master instance.
  • Confirm php 7.3 compatibility for pure-php redis connector
  • Compat bugfix for phpredis-v3 for exists() function. phpredis-v3 returns a bool, credis/phpredis-v4 return an int, this ensures all backend redis connectors return the same type for the exists function.
  • Like
Reactions: Da GuRu
  • If decompression of fetched content fails, just fail the cache get request. This should be a safe trade-off as if the key returns nothing XF stack should regenerate it.
    • Makes changing compression type a cache flush rather than rendering the site useless until Redis is manually flushed.
  • Like
Reactions: Da GuRu and thedude
  • Update redis stats display to match other stats UI theming
  • Display redis slave stats
    • Ability to drill down to each slave's stats
  • Like
Reactions: eva2000 and Sunka
  • Support XF1.5.16 'Only trigger the CSS cache for "good" requests to reduce the chance of the cache ballooning.'
    • For older versions of XF, the template list is sorted. But invalid templates are not detected.
  • Fix pure-php Redis connector which breaks 'Redis View Counters' add-on for large numbers of threads to update.
  • Track upstream components:
    • Prevent option compress_threshold < 1 to avoid errors compressing empty strings
    • Support LZ4 "high compression" as a integer (recomment a value of 4-6 for compress_data)
    • Support for using ElastiCache Cluster replica nodes for reads. See For details.
  • Like
Reactions: Sunka
  • Major update to redis library fixing a number of inconsistencies between pure php & php-extension modes.
    • This is not a breaking change for my redis add-ons.
    • All unit tests should pass
    • For custom code, the following redis commands have breaking changes:
      • pipeline/multi/exec fixes
        • Impacts; hmget/hgetall/info/ttl/scan/sscan/hscan/zscan/zrangebyscore/zrevrangebyscore/zrange/zrevrange
      • zrange/zrevrange in php extension mode now works.
      • hmget now returns consistent data format for all combinations of; normal/pipeline/multi with pure-php/extension.
      • Errors from Redis are now prefixed with "ERR " in both pure-php like from the php extension.
      • Improved logic around closing the connection to Redis (should make persistent mode stable)
Known issue:
  • In php 7.x, with the php extension, pub/sub subscribing can cause memory corruption.
    • 3.1.4RC3 is known to fix this.
  • Like
Reactions: rdn and Sunka
  • Sync with latest upstream redis php bindings
  • By default the Zend Cache "tags" support is disabled as XenForo does not use it and it introduces additional write operations for every cache entry or session to support it.

    To enable;
    $config['cache']['backendOptions']['enable_tags'] = true;
  • Update backend redis connector library.
    • Bugfix pure php connector, only impacts custom add-ons directly calling the redis library.
    • load_from_slaves option can now be 2 to include the master in the list of read-only instances to connect to.
This update synchronizes with the Credis and Cm_Cache_Backend_Redis library's upstream, which results in several breaking changes in configuration.

This is a breaking change if you use sentinel support

The following configuration keys have been renamed:
  • sentinel_master_set renamed to sentinel_master
  • slave-select renamed to slave_select_callable
  • sentinel_persistent renamed to sentinel, which is now an arrary; ie array('persistent' => true)
A new option has been introduced:
  • sentinel_master_verify
    • Checks the redis master is actually a master, not required if you are loading from a slave or can accept errors when the master redis instance falls over.
  • The sentinel option supports the following arguments, if the option doesn't exist falls back to the parent option in 'backendOptions':
    • persistent
    • connect_retries
    • read_timeout
    • timeout

Example of changes in configuration:

Previous configuration:
$config['cache']['backendOptions'] = array(
        'sentinel_master_set' => 'mymaster',
        'sentinel_persistent' => true,
        'slave-select' => 'preferLocalSlaveLocalDisk',
New configuration:
$config['cache']['backendOptions'] = array(
        'sentinel_master' => 'mymaster',
        'sentinel' => array('persistent' => true),
        'slave_select_callable' => 'preferLocalSlaveLocalDisk',