PurePHP Key-Value Storage
, (*1)
This is simple key-value storage written on PHP. It does not use files, or other database, just pure PHP., (*2)
Installation
Via Composer:, (*3)
composer require elfet/pure
Now you can run pure like this: php vendor/bin/pure, (*4)
Or you can install PurePHP globally to run pure by pure command., (*5)
Quick Guide
Start PurePHP by this command:, (*6)
pure start &
Now PurePHP server is running. Run this command:, (*7)
pure client
Now you can test PurePHP by simple commands like this:, (*8)
> pure.queue.collection.push('hello')
> pure.queue.collection.push('world')
> pure.queue.collection.pop() ~ ' ' ~ pure.queue.collection.pop()
string(11) "hello world"
In pure console you can write commands on Expression Language. To exit from console type exit command., (*9)
Documentation
Connection to PurePHP server
$port = 1337; // Default port value
$host = '127.0.0.1'; // Default host value
//...
$pure = new Pure\Client($port, $host);
Storages
PurePHP provide different types on storages. All supported storages are in src/Storage. You can access them by next methods and work with them like you work with them directly., (*10)
You do not need to manually create any collection. They will be automatically create at first access., (*11)
$pure->map('collection')->...
$pure->stack('collection')->...
$pure->queue('collection')->...
$pure->priority('collection')->...
Or you can access them by magic methods., (*12)
$pure->map->collection->...
$pure->stack->collection->...
$pure->queue->collection->...
//...
Array Storage ->map
This is simple storage what uses php array to store your data., (*13)
To store date in collection use push method:, (*14)
$pure->map('collection')->push(['hello' => 'world']);
To get value by key from collection use get method:, (*15)
$value = $pure->map('collection')->get('hello'); // will return 'world'.
To receive all elements use all method:, (*16)
$all = $pure->map('collection')->all();
You can check if key exist by has method, and delete element by delete method., (*17)
Stack Storage ->stack
This storage use SplStack to store your data., (*18)
You can use all SplStack methods and also all method., (*19)
Queue Storage ->queue
This storage use SplQueue to store your data., (*20)
You can use SplQueue methods and also all method., (*21)
SplQueue uses enqueue and deenqueue to push and pop from queue. In QueueStorage your can use push and pop methods to do this., (*22)
Priority Queue Storage ->priority
This storage use SplPriorityQueue to store your data., (*23)
You can use all SplPriorityQueue methods and also all method., (*24)
Filtering
Every storage support function filter., (*25)
Example:, (*26)
// Get all elements that more than a 100.
$result = $pure->queue('collection')->filter('value > 100');
// Limit to 10.
$result = $pure->priority('collection')->filter('value > 100', 10);
// Complex expression.
$result = $pure->of('collection')->filter('value["year"] > 2000 and value["name"] matches "/term/"');
Filter rules uses Expression Language.
In expression available two variables: key and value., (*27)
Deleting
You can delete storages by delete method:, (*28)
$pure->delete('collection');
TODO
- Dump to file
- Load from file
- Replication
- Sharding