Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fibjs/fib-kv
general key-value store on sql/level/mongo/redis
https://github.com/fibjs/fib-kv
key-value store
Last synced: 2 months ago
JSON representation
general key-value store on sql/level/mongo/redis
- Host: GitHub
- URL: https://github.com/fibjs/fib-kv
- Owner: fibjs
- Created: 2017-03-13T03:58:19.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-07-10T19:08:22.000Z (7 months ago)
- Last Synced: 2024-10-02T16:09:12.104Z (4 months ago)
- Topics: key-value, store
- Language: JavaScript
- Size: 46.9 KB
- Stars: 1
- Watchers: 3
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: Readme.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
- awesome - fib-kv - general key-value store on sql/level/mongo/redis. (Packages / Database/Cache)
README
# fib-kv
[![NPM version](https://img.shields.io/npm/v/fib-kv.svg)](https://www.npmjs.org/package/fib-kv)
[![Build Status](https://travis-ci.org/fibjs/fib-kv.svg)](https://travis-ci.org/fibjs/fib-kv)
[![Build status](https://ci.appveyor.com/api/projects/status/they3hi2gq01vrev?svg=true)](https://ci.appveyor.com/project/richardo2016/fib-kv)## Introduction
general key-value store on sql/level/mongo/redis for fibjs.
## Install
```sh
npm install fib-kv [--save]
```## Test
```sh
npm run ci
```## Creating a key-value store
### var kvs = new kv(conn, opts);
```JavaScript
conn: database connection or connection factory like fib-pool
opts: kvs options
```| opts | default | object/Map | LruCache | LevelDB | Redis | MongoDB | SQLite/MySQL |
|----------------------|---------|------------|----------|---------|-------|---------|--------------|
| table_name | "kvs" | x | x | x | √ | √ | √ |
| key_name | "k" | x | x | x | x | √ | √ |
| value_name | "v" | x | x | x | x | √ | √ |
| key_size | 32 | x | x | x | x | x | √ |
| value_size | 256 | x | x | x | x | x | √ |
| cleanup_interval(ms) | 60000 | x | x | x | x | x | √ |
| timeout(ms) | 0 | x | √ | x | √ | √ | √ |
| prefix | "" | √ | √ | √ | √ | √ | √ |
| cache | false | √ | √ | √ | √ | √ | √ |
| cache_size | 65536 | √ | √ | √ | √ | √ | √ |
| cache_timeout(ms) | 60000 | √ | √ | √ | √ | √ | √ |
| sql_value_type | 60000 | x | x | x | x | x | √ |**NOTICE** sql_value_type is one of below:
- TINYBLOB
- BLOB
- MEDIUMBLOB
- LONGBLOB
- TINYTEXT
- TEXT
- MEDIUMTEXT
- LONGTEXT
- VARCHARA key will not expire if `timeout` is less than or equal to 0.
#### Simple example (memory backend).
```JavaScript
var kv = require("fib-kv");var kvs = new kv({
"a": 100,
"b": 200
});
```#### LevelDB backend.
```JavaScript
var kv = require("fib-kv");
var db = require("db");var kvs = new kv(db.openLevelDB("test.ldb"));
```#### fib-pool backend.
```JavaScript
var kv = require("fib-kv");
var db = require("db");
var pool = require("fib-pool");var kvs = new kv(pool(() => db.openLevelDB("test.ldb")));
```## Methods
### kvs.setup()
setup the backend database.### v = kvs.get(k)
returns the value stored for that key.### kvs.set(k, v)
stores a key-value pair.### e = kvs.has(k)
returns whether a key is set on the store.### e = kvs.keys()
returns all keys in the store.### e = kvs.renew(k)
renews TTL for an unexpired key.### kvs.remove(k)
deletes a key-value pair by key.### e = kvs.cache_has(k)
returns whether a key is set on the cache.### kvs.cache_clear()
removes all the key-value pairs in the cache.