silviom / node-mem-cache Goto Github PK
View Code? Open in Web Editor NEWsimple in memory key/value cache with autoclean by timeout
simple in memory key/value cache with autoclean by timeout
I have tried this code and the output is not as expected. I also have looked at the code and the tests only look for expire
events.
var cache = new Cache({ timeout: 300 });
cache.set('foo', 'bar');
setTimeout(function () { console.log(cache.get('foo'); }, 1000);
which outputs bar
when expected null
.
I ran the unit tests on the module and got a random failure in the section should renew the item's timeout on every single 'get'
. The assertion is too narrow. For example, timeout + timeout * 4/3 = 233.3333....
, while you check that new Date().getTime() - now = 233
should be greater. Since the value's precision is not high enough, it does not account for the 0.3333
nanoseconds, it may be greater if and only if the time required to run the test is greater than 5000
nanoseconds. This is not the case on fast computers. Therefore, the test is fails.
You should round down the value and check for "greater or equal" instead :
assert.ok(Math.floor(timeout + timeout * 4/3) <= new Date().getTime() - now);
The same thing happens for the test case should expire an item by timeout
where the test
assert.ok( timeout < delta);
should be
assert.ok( timeout <= delta);
for the same reason.
I was wondering what was the motivation behind having negated options? I mean, why timeoutDisabled = false
instead of autoTimeout = true
? Or why doesNotRenewTimeout = false
instead of renewTimeout = true
?
I'm just curious.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.