All Projects → fabioricali → incache

fabioricali / incache

Licence: other
Powerful key/value in-memory storage or on disk to persist data

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to incache

DTC
DTC is a high performance Distributed Table Cache system designed by JD.com that offering hotspot data cache for databases in order to reduce pressure of database and improve QPS.
Stars: ✭ 21 (+31.25%)
Mutual labels:  storage, cache, cache-storage
Olric
Distributed cache and in-memory key/value data store. It can be used both as an embedded Go library and as a language-independent service.
Stars: ✭ 2,067 (+12818.75%)
Mutual labels:  cache, in-memory, cache-storage
Easystash
🗳Easy data persistence in Swift
Stars: ✭ 303 (+1793.75%)
Mutual labels:  storage, cache
Koa Redis
Redis storage for Koa session middleware/cache with Sentinel and Cluster support
Stars: ✭ 324 (+1925%)
Mutual labels:  storage, cache
Cash
HTTP response caching for Koa. Supports Redis, in-memory store, and more!
Stars: ✭ 122 (+662.5%)
Mutual labels:  storage, cache
Cache
📦 Nothing but Cache.
Stars: ✭ 2,491 (+15468.75%)
Mutual labels:  cache, cache-storage
elara
Elara DB is an easy to use, lightweight key-value database that can also be used as a fast in-memory cache. Manipulate data structures in-memory, encrypt database files and export data. 🎯
Stars: ✭ 93 (+481.25%)
Mutual labels:  storage, cache
Bojack
🐴 The unreliable key-value store
Stars: ✭ 101 (+531.25%)
Mutual labels:  storage, cache
Ignite Book Code Samples
All code samples, scripts and more in-depth examples for the book high performance in-memory computing with Apache Ignite. Please use the repository "the-apache-ignite-book" for Ignite version 2.6 or above.
Stars: ✭ 86 (+437.5%)
Mutual labels:  cache, in-memory
Bus
Bus 是一个基础框架、服务套件,它基于Java8编写,参考、借鉴了大量已有框架、组件的设计,可以作为后端服务的开发基础中间件。代码简洁,架构清晰,非常适合学习使用。
Stars: ✭ 253 (+1481.25%)
Mutual labels:  storage, cache
Caching
⏱ Caching library with easy-to-use API and many cache backends.
Stars: ✭ 234 (+1362.5%)
Mutual labels:  storage, cache
cache-all
Fast, efficient cache engines for both express routes & native nodeJs (redis, in-memory & file cache)
Stars: ✭ 22 (+37.5%)
Mutual labels:  singleton, cache-storage
Libcache
A Lightweight in-memory key:value cache library for Go.
Stars: ✭ 152 (+850%)
Mutual labels:  cache, in-memory
storage-box
Intuitive and easy-to-use storage box.
Stars: ✭ 26 (+62.5%)
Mutual labels:  storage, cache
Gcache
An in-memory cache library for golang. It supports multiple eviction policies: LRU, LFU, ARC
Stars: ✭ 1,787 (+11068.75%)
Mutual labels:  cache, in-memory
Egjs Persist
Provide cache interface to handle persisted data among history navigation.
Stars: ✭ 27 (+68.75%)
Mutual labels:  storage, cache
Go Cache
Go in-memory cache library
Stars: ✭ 15 (-6.25%)
Mutual labels:  cache, in-memory
Keshi
A better in-memory cache for Node and the browser
Stars: ✭ 75 (+368.75%)
Mutual labels:  cache, in-memory
Jstarcraft Core
目标是提供一个通用的Java核心编程框架,作为搭建其它框架或者项目的基础. 让相关领域的研发人员能够专注高层设计而不用关注底层实现. 涵盖了缓存,存储,编解码,资源,脚本,监控,通讯,事件,事务9个方面.
Stars: ✭ 150 (+837.5%)
Mutual labels:  storage, cache
kesho
store cache any data type string, boolean, jsonObject, jsonArray, .....
Stars: ✭ 19 (+18.75%)
Mutual labels:  storage, cache-storage






Powerful key/value in-memory storage or on disk to persist data



What does?

InCache is a module that store any info in memory, it can be used for example for storing server sessions, caching http response or sharing singleton object in your apps. It also give you the possibility to save data on disk so you can avoid the data loss when the process exit or restart. In a browser scenario all data is saved on localStorage through a key.

Installation

Node.js

npm install incache --save

Examples

Basic

const InCache = require('incache');
const store = new InCache();

// Create a record with key 'my key'
store.set('my key', 'my value');

// Update 'my key'
store.set('my key', {a: 1, b: 2});

// Get key
store.get('my key');

// Remove 'my key'
store.remove('my key');

// Clear
store.clear();

// Expires after 2 seconds
store.set('my string', 'hello world', {maxAge: 2000});
// Or expires on...
store.set('my string', 'hello world', {expires: '2028-08-22 12:00:00'});

Auto remove expired records

const store = new InCache({
    autoRemovePeriod: 2 //checks every 2 seconds
});

store.set('my string', 'hello world', {maxAge: 4000});

setTimeout(()=>{
    console.log(store.count()) //=> 0
}, 6000);

Max cache size

const store = new InCache({
    maxRecordNumber: 5
});

store.set('k0', 'v0');
store.set('k1', 'v1');
store.set('k2', 'v2');
store.set('k3', 'v3');
store.set('k4', 'v4');
store.set('k5', 'v5');

console.log(store.count()); //=> 5
console.log(store.has('k0')); //=> false

Load manually

const store = new InCache({
    autoLoad: false
});

// This method returns a Promise
store.load('my-path/my-store.json').then(() => {
    console.log('loaded');
}).catch(err => {
    console.log(err);
});

Save on disk

By default this operation is running before the process is terminated

const store = new InCache({
    autoSave: true
});

Save when data is changed

const store = new InCache({
    autoSave: true,
    autoSaveMode: 'timer'
});

Save manually

const store = new InCache({
    filePath: 'my-path/my-store.json'
});

store.set('a key', 'a value');

// This method returns a Promise
store.save();

// or specify a path
store.save('a-path/a-file.json').then(()=>{
    console.log('saved');
    store.load('a-path/a-file.json');
}).catch(err => {
    console.log(err);
});

Browser scenario

In browser environment the file path becomes a string key for localStorage interface:

store.load('myLocalStorageKey');
store.save('myLocalStorageKey');

Events

// Triggered when a record has been deleted
incache.on('remove', key => {
    console.log(key);
});

// Triggered before create/update
incache.on('beforeSet', (key, value) => {
    console.log(key, value);
    if(foo)
        return false;
});

// Triggered when a record has been created
incache.on('create', (key, record) => {
    console.log(key, record);
});

//Triggered when a record has been updated
incache.on('update', (key, record) => {
    console.log(key, record);
});

//Triggered when the cache is saved on disk
incache.on('save', () => {
    console.log('saved on disk');
});

//Triggered when the cache exceed max size
incache.on('exceed', (diff) => {
    console.log(`exceeded for ${diff}`);
});

//... for more events see the documentation

API

Please see the full documentation for more details.

Browser

Local

<script src="node_modules/incache/dist/incache.min.js"></script>

CDN unpkg

<script src="https://unpkg.com/incache/dist/incache.min.js"></script>

CDN jsDeliver

<script src="https://cdn.jsdelivr.net/npm/incache/dist/incache.min.js"></script>

Changelog

You can view the changelog here

License

InCache is open-sourced software licensed under the MIT license

Author

Fabio Ricali

Contributor

Davide Polano

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].