webmozart/key-value-store

A key-value store API with implementations for different backends.

1.0.0 2016-08-09 15:13 UTC

This package is auto-updated.

Last update: 2024-10-08 00:07:53 UTC


README

Build Status Build status Scrutinizer Code Quality Latest Stable Version Total Downloads Dependency Status

Latest release: 1.0.0

A key-value store API with implementations for different backends.

API Documentation

All contained key-value stores implement the interface KeyValueStore. The following stores are currently supported:

The interface CountableStore is supported by the following classes:

The interface SortableStore is supported by the following classes:

The decorator CachingDecorator exists for caching another store instance in a Doctrine cache.

FAQ

Why not use Doctrine Cache?

Caching is not key-value storage. When you use a cache, you accept that keys may disappear for various reasons:

  • Keys may expire.
  • Keys may be overwritten when the cache is full.
  • Keys may be lost after shutdowns.
  • ...

In another word, caches are volatile. This is not a problem, since the cached data is usually stored safely somewhere else. The point of a cache is to provide high-performance access to frequently needed data.

Key-value stores, on the other hand, are persistent. When you write a key to a key-value store, you expect it to be there until you delete it. It would be a disaster if data would silently disappear from a key-value store (or any other kind of database).

Hence the two libraries fulfill two very different purposes, even if their interfaces and implementations are often similar.

The CachingDecorator actually uses a Doctrine Cache object to cache the data of a persistent KeyValueStore.

Authors

Installation

Use Composer to install the package:

$ composer require webmozart/key-value-store

Contribute

Contributions to the package are always welcome!

Support

If you are having problems, send a mail to bschussek@gmail.com or shout out to @webmozart on Twitter.

License

All contents of this package are licensed under the MIT license.