cesargb / key-value-store
A simple key-value store implementation in PHP.
Installs: 1
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/cesargb/key-value-store
Requires
- php: ^8.4
Requires (Dev)
- illuminate/database: ^12.0|^13.0
- phpstan/phpstan: ^2.1
- phpunit/phpunit: ^12.5
Suggests
- ext-redis: Required to use RedisStore repository.
- illuminate/database: Required to use EloquentStore repository.
- predis/predis: Required to use PredisStore repository.
This package is auto-updated.
Last update: 2026-03-02 15:51:17 UTC
README
A simple and flexible key-value store library for PHP. It provides a common API with multiple backends: in-memory array, file storage, Redis (ext-redis), Predis, and Eloquent.
Install
composer require cesargb/key-value-store
Requirements:
- PHP
^8.4
Optional dependencies:
ext-redisforRedisStorepredis/predisforPredisStoreilluminate/databaseforEloquentStore
Usage
List of stores
ArrayStore: in-memory storage (resets when process ends)FileStore: file-based storage in a local directoryRedisStore: Redis storage using theext-redisextensionPredisStore: Redis storage usingpredis/predisEloquentStore: database storage through an Eloquent model
Basic usage
<?php use Cesargb\KeyValueStore\Store; use Cesargb\KeyValueStore\Repositories\ArrayStore; $store = new Store(new ArrayStore()); $store->set('name', 'Cesar'); echo $store->get('name'); // Cesar var_dump($store->has('name')); // true $store->delete('name'); var_dump($store->has('name')); // false
Multiple keys
<?php use Cesargb\KeyValueStore\Store; use Cesargb\KeyValueStore\Repositories\ArrayStore; $store = new Store(new ArrayStore()); $store->setMultiple([ 'a' => 1, 'b' => 2, ]); $values = $store->getMultiple(['a', 'b', 'c'], 'default'); // ['a' => 1, 'b' => 2, 'c' => 'default'] $store->deleteMultiple(['a', 'b']);
Use a different repository
<?php use Cesargb\KeyValueStore\Store; use Cesargb\KeyValueStore\Repositories\FileStore; use Cesargb\KeyValueStore\Repositories\RedisStore; use Cesargb\KeyValueStore\Repositories\PredisStore; use Cesargb\KeyValueStore\Repositories\EloquentStore; // File repository $store = new Store(new FileStore(__DIR__.'/storage/kv')); // Redis repository (ext-redis) $redis = new Redis(); $redis->connect('127.0.0.1', 6379); $store = new Store(new RedisStore($redis, prefix: 'kv_')); // Predis repository $predis = new Predis\Client(['host' => '127.0.0.1', 'port' => 6379]); $store = new Store(new PredisStore($predis, prefix: 'kv_')); // Eloquent repository // $model must be an Eloquent model with key and value columns. $store = new Store(new EloquentStore($model));
Key rules:
- Keys cannot be empty.
- Keys cannot contain:
{ } ( ) / \ @ :