2017 © Pedro Peláez
 

library predis-compressible

Client gzip compression for Predis library

image

b1rdex/predis-compressible

Client gzip compression for Predis library

  • Thursday, April 5, 2018
  • by b1rdex
  • Repository
  • 1 Watchers
  • 4 Stars
  • 1,656 Installations
  • PHP
  • 1 Dependents
  • 0 Suggesters
  • 0 Forks
  • 0 Open issues
  • 11 Versions
  • 414 % Grown

The README.md

Predis Compressible

Software license ![Latest stable][ico-version-stable] Monthly installs ![Build status][ico-travis], (*1)

Plugin for Predis to compress/decompress stored values transparently., (*2)

Currently supported commands: - SET - SETEX - SETNX - GET - MSET, (*3)

Installation:, (*4)

composer require b1rdex/predis-compressible

Example usage:, (*5)

<?php

use B1rdex\PredisCompressible\Command\StringGet;
use B1rdex\PredisCompressible\Command\StringGetMultiple;
use B1rdex\PredisCompressible\Command\StringSet;
use B1rdex\PredisCompressible\Command\StringSetExpire;
use B1rdex\PredisCompressible\Command\StringSetMultiple;
use B1rdex\PredisCompressible\Command\StringSetPreserve;
use B1rdex\PredisCompressible\Compressor\ConditionalCompressorWrapper;
use B1rdex\PredisCompressible\Compressor\GzipCompressor;
use B1rdex\PredisCompressible\CompressProcessor;
use Predis\Client;
use Predis\Configuration\OptionsInterface;
use Predis\Profile\Factory;
use Predis\Profile\RedisProfile;

// strings with length > 2048 bytes will be compressed
$compressor = new ConditionalCompressorWrapper(2048, new GzipCompressor());

$client = new Client([], [
    'profile' => static function (OptionsInterface $options) use ($compressor) {
        $profile = Factory::getDefault();
        if ($profile instanceof RedisProfile) {
            $processor = new CompressProcessor($compressor);
            $profile->setProcessor($processor);

            $profile->defineCommand('SET', StringSet::class);
            $profile->defineCommand('SETEX', StringSetExpire::class);
            $profile->defineCommand('PSETEX', StringSetExpire::class);
            $profile->defineCommand('SETNX', StringSetPreserve::class);
            $profile->defineCommand('GET', StringGet::class);
            $profile->defineCommand('MGET', StringGetMultiple::class);
            $profile->defineCommand('MSET', StringSetMultiple::class);
            $profile->defineCommand('MSETNX', StringSetMultiple::class);
        }

        return $profile;
    },
]);

Compressed values are stored as is. Default GzipCompressor uses gzencode php function to compress value with default parameters and gzdecode to decompress. You can create your own compressor by implementing CompressorInterface., (*6)

Roadmap: - Add more commands (HSET and their get counterparts at least) - Make initialization simpler, (*7)

The Versions

05/04 2018

dev-master

9999999-dev

Client gzip compression for Predis library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anatoly Pashin

05/04 2018

dev-php72

dev-php72

Client gzip compression for Predis library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anatoly Pashin

05/04 2018

dev-fix-api

dev-fix-api

Client gzip compression for Predis library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anatoly Pashin

16/06 2017

0.3

0.3.0.0

Client gzip compression for Predis library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anatoly Pashin

14/06 2017

0.2.1

0.2.1.0

Client gzip compression for Predis library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anatoly Pashin

14/06 2017

0.2

0.2.0.0

Client gzip compression for Predis library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anatoly Pashin

14/06 2017

0.1.4

0.1.4.0

Client gzip compression for Predis library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anatoly Pashin

14/06 2017

0.1.3

0.1.3.0

Client gzip compression for Predis library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anatoly Pashin

13/06 2017

0.1.2

0.1.2.0

Client gzip compression for Predis library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anatoly Pashin

13/06 2017

0.1.1

0.1.1.0

Client gzip compression for Predis library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anatoly Pashin

13/06 2017

0.1

0.1.0.0

Client gzip compression for Predis library

  Sources   Download

MIT

The Requires

 

The Development Requires

by Anatoly Pashin