Giter VIP home page Giter VIP logo

key-cache's Introduction

key-cache

中文文档

Storing data in the form of key into the file


code style fecs NPM Version NPM Downloads Linux Build Windows Build Test Coverage Dependencies

Install

requires node 4+

npm install key-cache --save

Use

// Create reference
var KeyCache = require('key-cache');

// Examples of objects
var cache = new KeyCache(options);

// Here you can use to manipulate the cache api
cache.get('balbalbal');

The default configuration

options.dir

Cache directory path based on the current run directory

/**
 * @default key-cache installation path of .cache/ directory
 * @type {String}
 */

options.timeout

Save time, in seconds, if empty will always exist

/**
 * @default null
 * @type {number|null}
 */

options.md5key

Set whether to use md5 named cache file name,To path is valid, it will filter the illegal character key, in addition to Chinese, letters, numbers, -, other characters will be ignored outside _, regular use is/[^\u4e00-\u9fa5a-zA-Z\_\-0-9]/g.

/**
 * @default true
 * @type {Boolean}
 */

Api

set

Write data to a file

/**
 * @param {string} key
 * @param {Object|string} value
 * @param {Object|undefined} options        If there will override the default configuration
 * @return {Object} this
 */
set(key, value, options = {})

get

Get data from files

/**
 * @param  {string} key
 *
 * @return {Object|string|null}             If there is no time has expired or will return null
 */
get(key)

remove

Delete data, and delete files

/**
 * @param  {string|undefined} key
 *
 * @return {Object}     this
 */
remove(key)

Examples

Simple

var cache = new KeyCache();

cache.set('name', 'key-cache');

console.log(cache.get('name'));

cache.remove('name');

console.log(cache.get('name')); // => null

Custom cache directory

var cache = new KeyCache({
    dir: '../cache/'
});

cache.set('name', 'key-cache');

// override the default configuration
cache.set('name2', 'key-cache', {
    dir: './cache2'
});

Set the expiration time

var cache = new KeyCache({
    timeout: 3
});

cache.set('name', 'key-cache');

// override the default configuration
cache.set('age', 1, {
    timeout: 5
});

setTimeout(function(){
    console.log(cache.get('name')); // => null
    console.log(cache.get('age')); // => 1
}, 3000);

Delete Cache

var cache = new KeyCache();

cache.set('name', 'key-cache');
cache.set('age', 1);

// Delete single
cache.remove('name');

console.log(cache.get('name')); // => null
console.log(cache.get('age')); // => 1

// Delete all
cache.remove();

console.log(cache.get('age')); // => null

md5key

Do not use md5 named cache file

var cache = new KeyCache({
    md5key: false
});

cache.set('key', 'key-cache'); // => filename is key.json
cache.set('age', 1); // => filename is age.json
cache.set('this a space +-', 1); // => filename is thisaspace-.json
cache.set('中文', 1); // => filename is 中文.json

Develop

Use es6 development, compiler-dependent babel 6.x

// Run the compiler, the es6 code from the compiled into lib in src
npm run compile

// Monitor file changes and runs the compiler
npm run watch

// Use fecs run Style Checker
npm run check

// Use mocha run the test case
npm run test

// Run the test cases and code coverage
npm run test-cov

Changelog

1.0.0

Add nodejs V8 test environment

0.3.1

add .getAll()

0.3.0

stand by node 4.x+

0.2.9

Modify api: fs.existsSync=>fs.statSync

0.2.8

Add nodejs 6.x test environment

0.2.7

Update test case to ES6

0.2.6

babel 6.x upgrade to compile

0.2.3

0.2.1

Return Value Type Repair function when the value is, the change from the undefined to null~

0.2.0

Add options.md5key parameter is used to set whether to use md5 named cache file name

0.1.x

Optimized code, add a test case

License

MIT

key-cache's People

Contributors

52cik avatar xuexb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

key-cache's Issues

记录问题

  • 废弃在set时的options参数
  • 处理在同目录下多个实例相互覆盖
  • 把一些方法抽出来: 判断文件, 判断文件夹, 写入, 读取等

优化英文文档

我是使用谷歌翻译的,同事说英文的都看不懂,应该是我断句的问题,待优化。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.