OST Cache is the central cache implementation for all OST products and can easily be plugged-in.
It contains three caching engines. The decision of which caching engine to use is governed while creating the cache object. The caching engines implemented are:
- Memcached
- Redis
- In-process (use with single threaded process in development mode only)
There is 1 parameter required while creating the cache implementer.
- First parameter is mandatory and it specifies the configuration strategy to be used. An example of the configStrategy is:
configStrategy = {
cache: {
engine: "none/redis/memcache"
}
};
Below are the examples:
// import the cache module
const OSTCache = require('@ostdotcom/cache');
// configStrategy for redis engine
configStrategy = {
cache: {
engine: "redis",
host: "localhost",
port: "6830",
password: "dsdsdsd",
enableTsl: "0",
defaultTtl: 36000,
consistentBehavior: "1"
}
}
// configStrategy for memcached engine
configStrategy = {
cache: {
engine: "memcached",
servers: ["127.0.0.1:11211"],
defaultTtl: 36000,
consistentBehavior: "1"
}
}
// configStrategy for in-memory engine
configStrategy = {
cache: {
engine: "none",
namespace: "A",
defaultTtl: "36000",
consistentBehavior: "1"
}
}
npm install @ostdotcom/cache --save
OSTCache = require('@ostdotcom/cache');
OSTCache = OSTCache.getInstance(configStrategy);
cacheImplementer = OSTCache.cacheInstance;
cacheImplementer.set('testKey', 'testValue', 5000).then(function(cacheResponse){
if (cacheResponse.isSuccess()) {
console.log(cacheResponse.data.response);
} else {
console.log(cacheResponse);
}
});
cacheImplementer.get('testKey').then(function(cacheResponse){
if (cacheResponse.isSuccess()) {
console.log(cacheResponse.data.response);
} else {
console.log(cacheResponse);
}
});
cacheImplementer.setObject('testObjKey', {dataK1: 'a', dataK2: 'b'}).then(function(cacheResponse){
if (cacheResponse.isSuccess()) {
console.log(cacheResponse.data.response);
} else {
console.log(cacheResponse);
}
});
cacheImplementer.getObject('testObjKey').then(function(cacheResponse){
if (cacheResponse.isSuccess()) {
console.log(cacheResponse.data.response);
} else {
console.log(cacheResponse);
}
});
* NOTE: Redis returns null from multiGet
for objects, even if a value is set in the cache; the other caching engines match this behaviour.
cacheImplementer.set('testKeyOne', 'One').then(console.log);
cacheImplementer.set('testKeyTwo', 'Two').then(console.log);
cacheImplementer.multiGet(['testKeyOne', 'testKeyTwo']).then(function(cacheResponse){
if (cacheResponse.isSuccess()) {
console.log(cacheResponse.data.response);
} else {
console.log(cacheResponse);
}
});
cacheImplementer.set('testKey', 'testValue').then(console.log);
cacheImplementer.del('testKey').then(function(cacheResponse){
if (cacheResponse.isSuccess()) {
console.log(cacheResponse.data.response);
} else {
console.log(cacheResponse);
}
});
cacheImplementer.set('testCounterKey', 1).then(console.log);
cacheImplementer.increment('testCounterKey', 10).then(function(cacheResponse){
if (cacheResponse.isSuccess()) {
console.log(cacheResponse.data.response);
} else {
console.log(cacheResponse);
}
});
cacheImplementer.decrement('testCounterKey', 5).then(function(cacheResponse){
if (cacheResponse.isSuccess()) {
console.log(cacheResponse.data.response);
} else {
console.log(cacheResponse);
}
});
cacheImplementer.set('testKey', "testData").then(console.log);
cacheImplementer.touch('testKey', 10).then(function(cacheResponse){
if (cacheResponse.isSuccess()) {
console.log(cacheResponse.data.response);
} else {
console.log(cacheResponse);
}
});