Although the msgpack version numbers appear to be x.y.z[-dev], I'm
testing as if it were w.x.y.z[-dev] in case this ever changes. Right
now the $4 is the same as adding 0.
Add --with-liblzf configure option to use system liblzf.
Use exponentially growing buffer for lzf_decompress.
Move liblzf files to separeted dir in package.xml.
This commit is adding support of data compression.
LZF was choosen because it small and fast and Redis server uses it.
Since [pecl package](https://pecl.php.net/package/lzf) doesn't provide
lzf.h file after installing, LZF library was added as submodule.
Another algorythms may be easely added by analogy with serializers.
TODO: unit-tests for different data types.
Given that non cluster and cluster based redis objects should act
exactly the same way (in terms of argument handling/processing)
we're extracting the parsing of arguments and command construction
from being directly inside of the PHP_METHOD itself.
This way, we don't repeat ourselves having two identical places
where we do this but in a slightly different way.
Every command takes a RedisSock pointer (coming from redis_sock_get
in a standard redis class, and cluster->flags in a cluster).
If we're passed a pointer for slot, we'll hash one of the keys
to return it's proper slot.
This is an initial commmit which adds a RedisCluster class as well
as the framework around which we'll be building proper cluster
support.
The first commit just contains the code to set up and use our new
RedisCluster class as well as parsing logic to handline CLUSTER NODES
such that we can map the keyspace.
Next up, command processing and then pipelining in a sane way.