Download the PHP package averias/phpredis-bloom without Composer
On this page you can find all versions of the php package averias/phpredis-bloom. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download averias/phpredis-bloom
More information about averias/phpredis-bloom
Files in averias/phpredis-bloom
Package phpredis-bloom
Short Description PHP client for RedisBloom module using phpredis extension
License MIT
Informations about the package phpredis-bloom
PhpRedisBloom
PHP client for RedisLab/RedisBloom Module, an extension of Redis core for probabilistic data structures.
Table of content
- Intro
- Requirements
- Usage
- Clients
- Items
- Why having a RedisBloomClient and classes for each RedisBloom data types?
- Automatic connection, disconnection and reconnection
- Code Sample
- Commands
- PhpRedisBloom commands
- Phpredis commands
- Raw commands
- Tests
- On a local Redis server 4.0+ with RedisBloom module and Redis extension 5 installed
- Docker
- Examples
- License
Intro
PhpRedisBloom provides the full set of commands for RedisBloom Module
and it's built on top of phpredis
and use it as Redis client, so you can also take advantage of some of the features included in phpredis
as Redis client.
Requirements
- Redis server 4.0+ version (Redis Modules are only available from Redis 4.0+)
- RedisBloom Module installed on Redis server as specified in Building and running
- PHP 7.2+ with PHP Redis extension 5 installed
Usage
Clients
There are 2 ways to execute PhpRedisBloom commands:
Executing commands by using RedisBloomClient
Executing commands by using RedisBloom data types classes (Bloom Filter, Cuckoo Filter, Count-Min Sketch and Top-K)
Items
The only allowed item values to add or insert in the 4 data structure are string, integers, and float, but notice
that all items are stored as strings, so adding the integer 13 or the string 13
will end in the same result.
For those data structures that allow inserting repeated items (like Cuckoo Filter) it will increase the count of that
item or will fail in the second insertion in case of structures that do not allow inserting repeated items.
Same behavior for floats, inserting first a float like 17.2 and then insert its representation as string 17.2
will
throw an exception in the second insertion in Bloom Filters which doesn't allow repeated items and in case of other
structures like Cuckoo Filter, Count-Min Sketch and Top-k will increase the counter to 2 after the second insertion.
You can take a look to examples/inserting-numbers.php to see an example of this behavior.
Why having a RedisBloomClient and classes for each RedisBloom data types?
- RedisBloomClient allows you execute whatever RedisBloom command (Bloom Filter, Cuckoo Filter, Mins-Sketch and Top-K commands) over different filters and also to execute Redis commands and raw Redis commands. So it is a client for general purposes and it is recommended when you need to manage different filters and keys or even when you want to execute normal Redis commands
- RedisBloom data types classes (Bloom Filter, Cuckoo Filter, Mins-Sketch and Top-K classes) just execute commands that belongs to that data type and over just one filter. They are useful when you need to manage just one filter.
Automatic connection, disconnection and reconnection
RedisBloomClient and Redis Bloom data types automatically connect Redis after creation, you can disconnect them from the
Redis instance by calling its disconnect
method:
$client->disconnect()
or
$bloomFilter->disconnect()
which will return true or false depending on the disconnection was possible.
After one successful disconnection the client or data type object will reconnect automatically if you reuse the object for sending more commands (see example below)
Code Sample
The following code snippet show how to instantiate RedisBloom clients and BloomFilter data type with different connection configurations
Commands
PhpRedisBloom commands
Phpredis-bloom provides all the commands for the four RedisBloom data types, please follow the links below for a detailed info for each one:
Phpredis commands
You can send Redis commands as specified in phpredis documentation
Raw commands
You can send whatever you want to Redis by using RedisBloomClient::executeRawCommand
:
Tests
On a local Redis server 4.0+ with RedisBloom module and Redis extension 5 installed
From console run the following command from the root directory of this project:
./vendor/bin/phpunit
if you don't have configured your local Redis server in 127.0.0.1:6379 you can set REDIS_TEST_SERVER, REDIS_TEST_PORT
and REDIS_TEST_DATABASE in ./phpunit.xml
file with your local Redis host, port and database before running the above
command.
Docker
Having Docker installed, run the following command in the root directory of this project:
bash run-tests-docker.sh
by running the above bash script, two docker services will be built, one with PHP 7.2 with xdebug and redis extensions
enabled and another with the image of redislab\rebloom:2.0.3
(Redis server 5 with RedisBloom module installed).
Then the tests will run inside phpredis-bloom
docker service container and finally both container will be stopped.
Examples
License
PhpRedisBloom code is distributed under MIT license, see LICENSE file