From df391310c8c176de99b17260bf91e3fe6819d3bc Mon Sep 17 00:00:00 2001 From: Benhur Davies Date: Sun, 14 Jun 2020 23:03:09 +0200 Subject: [PATCH 01/12] started ttl engine. implemented timeIndex method and test --- src/engines/TimeToLive.js | 36 ++++++++++++++++++++++++++++++++++ src/engines/TimeToLive.test.js | 22 +++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/engines/TimeToLive.js create mode 100644 src/engines/TimeToLive.test.js diff --git a/src/engines/TimeToLive.js b/src/engines/TimeToLive.js new file mode 100644 index 0000000..0caafb4 --- /dev/null +++ b/src/engines/TimeToLive.js @@ -0,0 +1,36 @@ +import DefaultHashTable from '../dataStructure/HashTable'; +import * as hashTableProp from '../hashTableSymbol'; + +function TimeToLive({ HashTable = DefaultHashTable, defaultTTL }) { + const store = new HashTable(); + const timeSeriesIndex = new HashTable(); + const timeIndexInterval = 5 * 60 * 1000; // milliseconds. + + let lastRunGC = Date.now(); + + this.add = (key, value, ttl = defaultTTL) => { + if (!ttl) + throw Error( + 'Expected ttl value. you can have to mention it in add method or mention as defaultTTL at constructor', + ); + + const expireTTL = Date.now() + ttl; + const payload = { value, ttl: expireTTL }; + store[hashTableProp.add](key,value); + + const timeIndex = getTimeIndex({time:expireTTL,timeIndexInterval}); + + // if(timeSeriesIndex[hashTableProp.has](key)) timeSeriesIndex[hashTableProp.add][timeIndex].push() + // timeSeriesIndex[hashTableProp.add](timeIndex,[key]); + }; +} + +// time : unix timestamp milliseconds +// interval : milliseconds (better to be factors of 60 (minutes)) +function getTimeIndex({ time, interval }) { + const timeParts = parseInt(time / interval, 10); + const forwardIndexTime = timeParts * interval + interval; + return forwardIndexTime; +} + +export { getTimeIndex }; diff --git a/src/engines/TimeToLive.test.js b/src/engines/TimeToLive.test.js new file mode 100644 index 0000000..3ec0479 --- /dev/null +++ b/src/engines/TimeToLive.test.js @@ -0,0 +1,22 @@ +import { getTimeIndex } from './TimeToLive'; + +describe('TimeToLive (TTL) : getTimeIndex', () => { + it('should index time to next upcoming interval', () => { + const toMinute = val => val * 60 * 1000; + + const date1 = new Date('2020-06-14T03:23:34'); + expect(getTimeIndex({ time: date1.getTime(), interval: toMinute(5) })).toBe( + new Date('2020-06-14T03:25:00').getTime(), + ); + + const date2 = new Date('2020-06-14T03:43:36'); + expect(getTimeIndex({ time: date2.getTime(), interval: toMinute(10) })).toBe( + new Date('2020-06-14T03:50:00').getTime(), + ); + + const date3 = new Date('2020-06-14T03:43:36'); + expect(getTimeIndex({ time: date3.getTime(), interval: toMinute(3) })).toBe( + new Date('2020-06-14T03:45:00').getTime(), + ); + }); +}); From f21230cd7bdb98c26cc0a867d0ba15368515d8ef Mon Sep 17 00:00:00 2001 From: Benhur Davies Date: Tue, 16 Jun 2020 23:46:06 +0200 Subject: [PATCH 02/12] ttl methods. unit test remaning --- src/engines/TimeToLive.js | 63 +++++++++++++++++++++++++++++++++++---- 1 file changed, 58 insertions(+), 5 deletions(-) diff --git a/src/engines/TimeToLive.js b/src/engines/TimeToLive.js index 0caafb4..d2f28a2 100644 --- a/src/engines/TimeToLive.js +++ b/src/engines/TimeToLive.js @@ -1,4 +1,5 @@ import DefaultHashTable from '../dataStructure/HashTable'; +import DoublyLinkedList from '../dataStructure/DoublyLinkedList'; import * as hashTableProp from '../hashTableSymbol'; function TimeToLive({ HashTable = DefaultHashTable, defaultTTL }) { @@ -15,14 +16,66 @@ function TimeToLive({ HashTable = DefaultHashTable, defaultTTL }) { ); const expireTTL = Date.now() + ttl; - const payload = { value, ttl: expireTTL }; - store[hashTableProp.add](key,value); + const bucket = getTimeBucket(expireTTL); + bucket.addFirst(key); + const tNode = bucket.getFirst(); + const payload = { value, ttl: expireTTL, tNode }; + store[hashTableProp.add](key, payload); + }; + + this.get = key => { + const payload = store[hashTableProp.get](key); + if (payload) { + const { ttl, value } = payload; + if (checkIfElementExpire(payload)) return undefined; + else return value; + } + return undefined; + }; + + this.has = key => { + return hashTable[hashTableProp.has](key); + }; - const timeIndex = getTimeIndex({time:expireTTL,timeIndexInterval}); + this.remove = () => { + if (this.has(key)) { + const { ttl, tNode } = hashTable[hashTableProp.get](key); + const timeBucket = getTimeBucket(ttl); + timeBucket.remove(tNode); + } + }; - // if(timeSeriesIndex[hashTableProp.has](key)) timeSeriesIndex[hashTableProp.add][timeIndex].push() - // timeSeriesIndex[hashTableProp.add](timeIndex,[key]); + this.size = () => { + return store[hashTableProp.size](); }; + + function getTimeBucket(expireTTL) { + const timeIndex = getTimeIndex({ time: expireTTL, timeIndexInterval }); + + if (timeSeriesIndex[hashTableProp.has](key)) { + return timeSeriesIndex[hashTableProp.add][timeIndex]; + } else { + const list = new DoublyLinkedList(); + timeSeriesIndex[hashTableProp.add](timeIndex, list); + return list; + } + } + + function checkIfElementExpire({ ttl }) { + if (ttl < Date.now()) { + const timeIndex = getTimeIndex({ time: ttl, timeIndexInterval }); + cleanExpired(timeIndex); + return true; + } + return false; + } + + function cleanExpired(timeIndex) { + const keys = timeSeriesIndex[hashTableProp.get][timeIndex]; + for (key of keys) { + store[hashTableProp.remove](key); + } + } } // time : unix timestamp milliseconds From f406159571660e3a9d25c3f13820aa09795561bd Mon Sep 17 00:00:00 2001 From: Benhur Davies Date: Wed, 17 Jun 2020 22:38:08 +0200 Subject: [PATCH 03/12] basic method unit test and fixing --- src/engines/TimeToLive.js | 18 ++++++++++-------- src/engines/TimeToLive.test.js | 24 ++++++++++++++++++++---- 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/engines/TimeToLive.js b/src/engines/TimeToLive.js index d2f28a2..d977944 100644 --- a/src/engines/TimeToLive.js +++ b/src/engines/TimeToLive.js @@ -2,7 +2,7 @@ import DefaultHashTable from '../dataStructure/HashTable'; import DoublyLinkedList from '../dataStructure/DoublyLinkedList'; import * as hashTableProp from '../hashTableSymbol'; -function TimeToLive({ HashTable = DefaultHashTable, defaultTTL }) { +function TimeToLive({ HashTable = DefaultHashTable, defaultTTL } = {}) { const store = new HashTable(); const timeSeriesIndex = new HashTable(); const timeIndexInterval = 5 * 60 * 1000; // milliseconds. @@ -34,14 +34,15 @@ function TimeToLive({ HashTable = DefaultHashTable, defaultTTL }) { }; this.has = key => { - return hashTable[hashTableProp.has](key); + return store[hashTableProp.has](key); }; - this.remove = () => { + this.remove = (key) => { if (this.has(key)) { - const { ttl, tNode } = hashTable[hashTableProp.get](key); + const { ttl, tNode } = store[hashTableProp.get](key); const timeBucket = getTimeBucket(ttl); timeBucket.remove(tNode); + store[hashTableProp.remove](key); } }; @@ -50,10 +51,10 @@ function TimeToLive({ HashTable = DefaultHashTable, defaultTTL }) { }; function getTimeBucket(expireTTL) { - const timeIndex = getTimeIndex({ time: expireTTL, timeIndexInterval }); + const timeIndex = getTimeIndex({ time: expireTTL, interval:timeIndexInterval }); - if (timeSeriesIndex[hashTableProp.has](key)) { - return timeSeriesIndex[hashTableProp.add][timeIndex]; + if (timeSeriesIndex[hashTableProp.has](timeIndex)) { + return timeSeriesIndex[hashTableProp.get](timeIndex); } else { const list = new DoublyLinkedList(); timeSeriesIndex[hashTableProp.add](timeIndex, list); @@ -63,7 +64,7 @@ function TimeToLive({ HashTable = DefaultHashTable, defaultTTL }) { function checkIfElementExpire({ ttl }) { if (ttl < Date.now()) { - const timeIndex = getTimeIndex({ time: ttl, timeIndexInterval }); + const timeIndex = getTimeIndex({ time: ttl, interval:timeIndexInterval }); cleanExpired(timeIndex); return true; } @@ -87,3 +88,4 @@ function getTimeIndex({ time, interval }) { } export { getTimeIndex }; +export default TimeToLive; diff --git a/src/engines/TimeToLive.test.js b/src/engines/TimeToLive.test.js index 3ec0479..19bb77d 100644 --- a/src/engines/TimeToLive.test.js +++ b/src/engines/TimeToLive.test.js @@ -1,4 +1,4 @@ -import { getTimeIndex } from './TimeToLive'; +import TimeToLive, { getTimeIndex } from './TimeToLive'; describe('TimeToLive (TTL) : getTimeIndex', () => { it('should index time to next upcoming interval', () => { @@ -10,9 +10,9 @@ describe('TimeToLive (TTL) : getTimeIndex', () => { ); const date2 = new Date('2020-06-14T03:43:36'); - expect(getTimeIndex({ time: date2.getTime(), interval: toMinute(10) })).toBe( - new Date('2020-06-14T03:50:00').getTime(), - ); + expect( + getTimeIndex({ time: date2.getTime(), interval: toMinute(10) }), + ).toBe(new Date('2020-06-14T03:50:00').getTime()); const date3 = new Date('2020-06-14T03:43:36'); expect(getTimeIndex({ time: date3.getTime(), interval: toMinute(3) })).toBe( @@ -20,3 +20,19 @@ describe('TimeToLive (TTL) : getTimeIndex', () => { ); }); }); + +describe('TimeToLive', () => { + it('should have basic cache features', () => { + const ttlCache = new TimeToLive(); + ttlCache.add('apple',5,1000); + ttlCache.add('orange',2,2000); + expect(ttlCache.get('apple')).toBe(5); + expect(ttlCache.has('apple')).toBe(true); + expect(ttlCache.size()).toBe(2); + + ttlCache.remove('apple'); + expect(ttlCache.size()).toBe(1); + expect(ttlCache.get('apple')).toBe(undefined); + expect(ttlCache.get('orange')).toBe(2); + }); +}); From 8bfd8c352d880146ce269e1c74e4fa5b953a3aea Mon Sep 17 00:00:00 2001 From: Benhur Davies Date: Sat, 20 Jun 2020 14:01:43 +0200 Subject: [PATCH 04/12] ttl arct doc --- .npmignore | 4 ++-- docs/images/ttl-arct.png | Bin 0 -> 245895 bytes docs/ttl-engine.md | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 docs/images/ttl-arct.png create mode 100644 docs/ttl-engine.md diff --git a/.npmignore b/.npmignore index 646de33..d16e175 100644 --- a/.npmignore +++ b/.npmignore @@ -4,6 +4,6 @@ report tmp/ .env -dist .cache -.github \ No newline at end of file +.github +docs \ No newline at end of file diff --git a/docs/images/ttl-arct.png b/docs/images/ttl-arct.png new file mode 100644 index 0000000000000000000000000000000000000000..e44fa9d41c7079c9b6a4cc60b53118fd7389baee GIT binary patch literal 245895 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੧v#?Lz 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 literal 0 HcmV?d00001 diff --git a/docs/ttl-engine.md b/docs/ttl-engine.md new file mode 100644 index 0000000..86231bd --- /dev/null +++ b/docs/ttl-engine.md @@ -0,0 +1,3 @@ +# TTL cache engine Architecture + +![](./images/ttl-arct.png) \ No newline at end of file From 6309ba95f75d381deb37f7549378705be8d17c0a Mon Sep 17 00:00:00 2001 From: Benhur Davies Date: Mon, 22 Jun 2020 22:25:58 +0200 Subject: [PATCH 05/12] rename var --- src/engines/TimeToLive.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/engines/TimeToLive.js b/src/engines/TimeToLive.js index d977944..da8d36e 100644 --- a/src/engines/TimeToLive.js +++ b/src/engines/TimeToLive.js @@ -7,7 +7,7 @@ function TimeToLive({ HashTable = DefaultHashTable, defaultTTL } = {}) { const timeSeriesIndex = new HashTable(); const timeIndexInterval = 5 * 60 * 1000; // milliseconds. - let lastRunGC = Date.now(); + let lowestTimePartition = Date.now(); this.add = (key, value, ttl = defaultTTL) => { if (!ttl) From 06f18b8a4e6114fb590a55957c61092399acd01a Mon Sep 17 00:00:00 2001 From: Benhur Davies Date: Thu, 25 Jun 2020 23:41:49 +0200 Subject: [PATCH 06/12] feature implementation of ttl --- .prettierrc | 2 +- package-lock.json | 12 +++-- package.json | 1 + src/engines/TimeToLive.js | 99 ++++++++++++++++++++++++++-------- src/engines/TimeToLive.test.js | 93 ++++++++++++++++++++++++++++---- 5 files changed, 171 insertions(+), 36 deletions(-) diff --git a/.prettierrc b/.prettierrc index 0b0eae1..f4eb619 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,5 +1,5 @@ { - "printWidth": 80, + "printWidth": 100, "tabWidth": 2, "useTabs": false, "semi": true, diff --git a/package-lock.json b/package-lock.json index df4db63..f8cb7eb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8591,6 +8591,12 @@ "minimist": "^1.2.5" } }, + "mockdate": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mockdate/-/mockdate-3.0.2.tgz", + "integrity": "sha512-ldfYSUW1ocqSHGTK6rrODUiqAFPGAg0xaHqYJ5tvj1hQyFsjuHpuWgWFTZWwDVlzougN/s2/mhDr8r5nY5xDpA==", + "dev": true + }, "module-details-from-path": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", @@ -12073,9 +12079,9 @@ } }, "yargs-parser": { - "version": "18.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.1.tgz", - "integrity": "sha512-KRHEsOM16IX7XuLnMOqImcPNbLVXMNHYAoFc3BKR8Ortl5gzDbtXvvEoGx9imk5E+X1VeNKNlcHr8B8vi+7ipA==", + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/package.json b/package.json index 8b78f8c..c0cbe70 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,7 @@ "jest": "^25.1.0", "lint-staged": "^10.0.8", "microbundle": "^0.12.0", + "mockdate": "^3.0.2", "pre-commit": "^1.2.2", "prettier": "^1.19.1" } diff --git a/src/engines/TimeToLive.js b/src/engines/TimeToLive.js index da8d36e..13dfb96 100644 --- a/src/engines/TimeToLive.js +++ b/src/engines/TimeToLive.js @@ -4,13 +4,13 @@ import * as hashTableProp from '../hashTableSymbol'; function TimeToLive({ HashTable = DefaultHashTable, defaultTTL } = {}) { const store = new HashTable(); - const timeSeriesIndex = new HashTable(); + const timePartition = new HashTable(); const timeIndexInterval = 5 * 60 * 1000; // milliseconds. let lowestTimePartition = Date.now(); this.add = (key, value, ttl = defaultTTL) => { - if (!ttl) + if (!ttl && Number.isInteger(ttl)) throw Error( 'Expected ttl value. you can have to mention it in add method or mention as defaultTTL at constructor', ); @@ -18,7 +18,7 @@ function TimeToLive({ HashTable = DefaultHashTable, defaultTTL } = {}) { const expireTTL = Date.now() + ttl; const bucket = getTimeBucket(expireTTL); bucket.addFirst(key); - const tNode = bucket.getFirst(); + const tNode = bucket.getFirstNode(); const payload = { value, ttl: expireTTL, tNode }; store[hashTableProp.add](key, payload); }; @@ -27,17 +27,20 @@ function TimeToLive({ HashTable = DefaultHashTable, defaultTTL } = {}) { const payload = store[hashTableProp.get](key); if (payload) { const { ttl, value } = payload; - if (checkIfElementExpire(payload)) return undefined; + if (checkIfElementExpire({ ttl, key })) return undefined; else return value; } return undefined; }; this.has = key => { - return store[hashTableProp.has](key); + return ( + store[hashTableProp.has](key) && + !checkIfElementExpire({ ttl: store[hashTableProp.get](key), key }) + ); }; - this.remove = (key) => { + this.remove = key => { if (this.has(key)) { const { ttl, tNode } = store[hashTableProp.get](key); const timeBucket = getTimeBucket(ttl); @@ -50,42 +53,96 @@ function TimeToLive({ HashTable = DefaultHashTable, defaultTTL } = {}) { return store[hashTableProp.size](); }; + this.runGC = () => { + const cleanTo = getBackwardTimeIndex({ time: Date.now(), interval: timeIndexInterval }); + cleanExpiredBuckets(cleanTo); + + const nextCleanBucket = getForwardTimeIndex({ time: Date.now(), interval: timeIndexInterval }); + cleanNotExpiredBucket(nextCleanBucket); + }; + function getTimeBucket(expireTTL) { - const timeIndex = getTimeIndex({ time: expireTTL, interval:timeIndexInterval }); + const timeIndex = getForwardTimeIndex({ + time: expireTTL, + interval: timeIndexInterval, + }); - if (timeSeriesIndex[hashTableProp.has](timeIndex)) { - return timeSeriesIndex[hashTableProp.get](timeIndex); + if (timePartition[hashTableProp.has](timeIndex)) { + return timePartition[hashTableProp.get](timeIndex); } else { const list = new DoublyLinkedList(); - timeSeriesIndex[hashTableProp.add](timeIndex, list); + timePartition[hashTableProp.add](timeIndex, list); return list; } } - function checkIfElementExpire({ ttl }) { + const checkIfElementExpire = ({ ttl, key }) => { if (ttl < Date.now()) { - const timeIndex = getTimeIndex({ time: ttl, interval:timeIndexInterval }); - cleanExpired(timeIndex); + const timeIndex = getBackwardTimeIndex({ + time: ttl, + interval: timeIndexInterval, + }); + this.remove(key); + cleanExpiredBuckets(timeIndex); return true; } return false; + }; + + function cleanExpiredBucket(timeIndex) { + if (timePartition[hashTableProp.has](timeIndex)) { + const tNodes = timePartition[hashTableProp.get](timeIndex); + for (const tNode of tNodes) { + store[hashTableProp.remove](tNode.value); + } + timePartition[hashTableProp.remove](timeIndex); + } } - function cleanExpired(timeIndex) { - const keys = timeSeriesIndex[hashTableProp.get][timeIndex]; - for (key of keys) { - store[hashTableProp.remove](key); + function cleanExpiredBuckets(tillTimeIndex) { + const cleanFrom = getForwardTimeIndex({ + time: lowestTimePartition, + interval: timeIndexInterval, + }); + + for (const curTimeIndex of getIndexBetween({ + from: cleanFrom, + to: tillTimeIndex, + interval: timeIndexInterval, + })) { + cleanExpiredBucket(curTimeIndex); + } + lowestTimePartition = tillTimeIndex; + } + + function cleanNotExpiredBucket(timeIndex) { + if (timePartition[hashTableProp.has](timeIndex)) { + const tNodes = timePartition[hashTableProp.get](timeIndex); + for (const { value: key } of tNodes) { + const { ttl } = store[hashTableProp.get](key); + if (ttl < Date.now()) { + store[hashTableProp.remove](key); + } + } } } } // time : unix timestamp milliseconds // interval : milliseconds (better to be factors of 60 (minutes)) -function getTimeIndex({ time, interval }) { +function getForwardTimeIndex({ time, interval }) { + const timeParts = parseInt(time / interval, 10); + return timeParts * interval + interval; +} + +function getBackwardTimeIndex({ time, interval }) { const timeParts = parseInt(time / interval, 10); - const forwardIndexTime = timeParts * interval + interval; - return forwardIndexTime; + return timeParts * interval; +} + +function* getIndexBetween({ from, to, interval }) { + for (let i = from; i <= to; i += interval) yield i; } -export { getTimeIndex }; +export { getForwardTimeIndex, getBackwardTimeIndex, getIndexBetween }; export default TimeToLive; diff --git a/src/engines/TimeToLive.test.js b/src/engines/TimeToLive.test.js index 19bb77d..8e582ff 100644 --- a/src/engines/TimeToLive.test.js +++ b/src/engines/TimeToLive.test.js @@ -1,31 +1,67 @@ -import TimeToLive, { getTimeIndex } from './TimeToLive'; +import MockDate from 'mockdate'; -describe('TimeToLive (TTL) : getTimeIndex', () => { - it('should index time to next upcoming interval', () => { - const toMinute = val => val * 60 * 1000; +import TimeToLive, { + getForwardTimeIndex, + getBackwardTimeIndex, + getIndexBetween, +} from './TimeToLive'; + +const toMinute = val => val * 60 * 1000; +describe('TimeToLive (TTL) : getForwardTimeIndex', () => { + it('should index time to next upcoming interval', () => { const date1 = new Date('2020-06-14T03:23:34'); - expect(getTimeIndex({ time: date1.getTime(), interval: toMinute(5) })).toBe( + expect(getForwardTimeIndex({ time: date1.getTime(), interval: toMinute(5) })).toBe( new Date('2020-06-14T03:25:00').getTime(), ); const date2 = new Date('2020-06-14T03:43:36'); - expect( - getTimeIndex({ time: date2.getTime(), interval: toMinute(10) }), - ).toBe(new Date('2020-06-14T03:50:00').getTime()); + expect(getForwardTimeIndex({ time: date2.getTime(), interval: toMinute(10) })).toBe( + new Date('2020-06-14T03:50:00').getTime(), + ); const date3 = new Date('2020-06-14T03:43:36'); - expect(getTimeIndex({ time: date3.getTime(), interval: toMinute(3) })).toBe( + expect(getForwardTimeIndex({ time: date3.getTime(), interval: toMinute(3) })).toBe( new Date('2020-06-14T03:45:00').getTime(), ); }); }); +describe('TimeToLive (TTL) : getBackwardTimeIndex', () => { + it('should index time to before upcoming interval', () => { + const date1 = new Date('2020-06-14T03:23:34'); + expect(getBackwardTimeIndex({ time: date1.getTime(), interval: toMinute(5) })).toBe( + new Date('2020-06-14T03:20:00').getTime(), + ); + + const date2 = new Date('2020-06-14T03:43:36'); + expect(getBackwardTimeIndex({ time: date2.getTime(), interval: toMinute(10) })).toBe( + new Date('2020-06-14T03:40:00').getTime(), + ); + }); +}); + +describe('TimeToLive (TTL) : getBackwardTimeIndex', () => { + it('should generate index between from and to', () => { + const interval = 5 * 60 * 1000; + const date1 = new Date('2020-06-14T03:23:34'); + const date2 = new Date('2020-06-14T03:36:34'); + const from = getForwardTimeIndex({ time: date1.getTime(), interval }); + const to = getBackwardTimeIndex({ time: date2.getTime(), interval }); + + expect([...getIndexBetween({ from, to, interval })]).toEqual([ + new Date('2020-06-14T03:25:00').getTime(), + new Date('2020-06-14T03:30:00').getTime(), + new Date('2020-06-14T03:35:00').getTime(), + ]); + }); +}); + describe('TimeToLive', () => { it('should have basic cache features', () => { const ttlCache = new TimeToLive(); - ttlCache.add('apple',5,1000); - ttlCache.add('orange',2,2000); + ttlCache.add('apple', 5, 1000); + ttlCache.add('orange', 2, 2000); expect(ttlCache.get('apple')).toBe(5); expect(ttlCache.has('apple')).toBe(true); expect(ttlCache.size()).toBe(2); @@ -35,4 +71,39 @@ describe('TimeToLive', () => { expect(ttlCache.get('apple')).toBe(undefined); expect(ttlCache.get('orange')).toBe(2); }); + + it('should not return expired item', () => { + MockDate.set(new Date('2020-06-25T03:25:00')); + const ttlCache = new TimeToLive(); + ttlCache.add('ben', 5, 5000); + expect(ttlCache.get('ben')).toBe(5); + + MockDate.set(new Date('2020-06-25T03:26:00')); + expect(ttlCache.get('ben')).toBe(undefined); + expect(ttlCache.size()).toBe(0); + + ttlCache.add('mango', 10, 180000); + ttlCache.add('grape', 33, 660000); + + MockDate.set(new Date('2020-06-25T03:45:00')); + expect(ttlCache.get('grape')).toBe(undefined); + expect(ttlCache.size()).toBe(0); + + MockDate.reset(); + }); + + it('should clean expired item when runGC calls', () => { + MockDate.set(new Date('2020-06-25T03:24:00')); + const ttlCache = new TimeToLive(); + + ttlCache.add('test1', 5, 180000); // 3mint + ttlCache.add('test2', 2, 660000); // 12 mint + ttlCache.add('test3', 60, 900000); // 15 mint + ttlCache.add('test4', 43, 1080000); // 18 mint + expect(ttlCache.size()).toBe(4); + + MockDate.set(new Date('2020-06-25T03:40:00')); + ttlCache.runGC(); + expect(ttlCache.size()).toBe(1); + }); }); From baef5289cf31dc1722691be4c49ef6563a85899d Mon Sep 17 00:00:00 2001 From: Benhur Davies Date: Thu, 25 Jun 2020 23:46:11 +0200 Subject: [PATCH 07/12] positive integer check --- src/engines/TimeToLive.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/engines/TimeToLive.js b/src/engines/TimeToLive.js index 13dfb96..2beb1af 100644 --- a/src/engines/TimeToLive.js +++ b/src/engines/TimeToLive.js @@ -10,9 +10,10 @@ function TimeToLive({ HashTable = DefaultHashTable, defaultTTL } = {}) { let lowestTimePartition = Date.now(); this.add = (key, value, ttl = defaultTTL) => { - if (!ttl && Number.isInteger(ttl)) + if (!ttl && Number.isInteger(ttl) && ttl > 0) throw Error( - 'Expected ttl value. you can have to mention it in add method or mention as defaultTTL at constructor', + 'Expected ttl value (should be positive integer). ' + + 'you can have to mention it in add method or mention as defaultTTL at constructor', ); const expireTTL = Date.now() + ttl; From 470d47720d0e47e7d0510c3ebf7a474a66e18e79 Mon Sep 17 00:00:00 2001 From: Benhur Davies Date: Sat, 27 Jun 2020 22:35:40 +0200 Subject: [PATCH 08/12] implemented ttl on factory and more test --- src/cache.js | 8 +++++--- src/cache.test.js | 6 ++++++ src/engines/TimeToLive.js | 2 +- src/engines/TimeToLive.test.js | 26 ++++++++++++++++++++++++++ 4 files changed, 38 insertions(+), 4 deletions(-) diff --git a/src/cache.js b/src/cache.js index d11674a..2543797 100644 --- a/src/cache.js +++ b/src/cache.js @@ -1,18 +1,20 @@ import DefaultHashTable from './dataStructure/HashTable'; import LRU from './engines/LeastRecentlyUsed'; +import TTL from './engines/TimeToLive'; function factory({ size = Number.MAX_SAFE_INTEGER, engine = 'LRU', HashTable = DefaultHashTable, + defaultTTL, } = {}) { switch (engine) { case 'LRU': return new LRU({ size, HashTable }); + case 'TTL': + return new TTL({ HashTable, defaultTTL }); default: - throw Error( - `Engine : ${engine} is not implemented. Currently we have only 'LRU' engine.`, - ); + throw Error(`Engine : ${engine} is not implemented. Currently we have only 'LRU' engine.`); } } diff --git a/src/cache.test.js b/src/cache.test.js index d3ab840..0bef32f 100644 --- a/src/cache.test.js +++ b/src/cache.test.js @@ -1,5 +1,6 @@ import createCache from './cache'; import LRU from './engines/LeastRecentlyUsed'; +import TTL from './engines/TimeToLive'; describe('cache factory', () => { it('should create a default cache instance of LRU if no engine is mentioned', () => { @@ -12,6 +13,11 @@ describe('cache factory', () => { expect(cache1 instanceof LRU).toBe(true); }); + it('should create ttl cache instance',()=>{ + const cache1 = createCache({ engine: 'TTL' }); + expect(cache1 instanceof TTL).toBe(true); + }) + it('should throw error if engine type is not implemented', () => { expect(() => createCache({ engine: 'NOT_HERE' })).toThrow( `Engine : NOT_HERE is not implemented`, diff --git a/src/engines/TimeToLive.js b/src/engines/TimeToLive.js index 2beb1af..1259717 100644 --- a/src/engines/TimeToLive.js +++ b/src/engines/TimeToLive.js @@ -10,7 +10,7 @@ function TimeToLive({ HashTable = DefaultHashTable, defaultTTL } = {}) { let lowestTimePartition = Date.now(); this.add = (key, value, ttl = defaultTTL) => { - if (!ttl && Number.isInteger(ttl) && ttl > 0) + if (!ttl || !Number.isInteger(ttl) || ttl <= 0) throw Error( 'Expected ttl value (should be positive integer). ' + 'you can have to mention it in add method or mention as defaultTTL at constructor', diff --git a/src/engines/TimeToLive.test.js b/src/engines/TimeToLive.test.js index 8e582ff..a82e7d3 100644 --- a/src/engines/TimeToLive.test.js +++ b/src/engines/TimeToLive.test.js @@ -107,3 +107,29 @@ describe('TimeToLive', () => { expect(ttlCache.size()).toBe(1); }); }); + +describe('TimeToLive error test', () => { + it('should throw error ttl value is not given', () => { + const ttlCache = new TimeToLive(); + expect(() => ttlCache.add('key1', 'value')).toThrow( + 'Expected ttl value (should be positive integer). ' + + 'you can have to mention it in add method or mention as defaultTTL at constructor', + ); + + expect(() => ttlCache.add('key1', 'value', 0)).toThrow( + 'Expected ttl value (should be positive integer). ' + + 'you can have to mention it in add method or mention as defaultTTL at constructor', + ); + + expect(() => ttlCache.add('key1', 'value', -1)).toThrow( + 'Expected ttl value (should be positive integer). ' + + 'you can have to mention it in add method or mention as defaultTTL at constructor', + ); + }); + + it('should not throw error ttl value is not give but defined as default TTL', () => { + const ttlCache = new TimeToLive({ defaultTTL: 5000 }); + ttlCache.add('key1', 'value'); + expect(ttlCache.get('key1')).toBe('value'); + }); +}); From 70d13ea028dbe1c075477a88c722cfb114d5ed5f Mon Sep 17 00:00:00 2001 From: Benhur Davies Date: Sat, 27 Jun 2020 23:22:32 +0200 Subject: [PATCH 09/12] docs --- README.md | 35 +++++++++++++++++++++++++++++++++-- docs/ttl-engine.md | 6 ++++++ 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 93952f7..09db69f 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,38 @@ const cache = createCache({ }); ``` +#### Engines and options + +| Engines Name | key | supported options | | | +|---------------------|-----|-----------------------|---|---| +| Least Recently Used | LRU | HashTable, size | | | +| Time To Live | TTL | HashTable, defaultTTL | | | + +### Thing to know about TTL engine. + +Creating a ttl cache instance. [How it works and Architecture](./docs/ttl-engine.md) + +```javascript +import { createCache } from 'node-cache-engine'; + +const cache = createCache({ + engine = 'TTL', + HashTable = YourCustomHashTable, // for custom hash Table. default hashTable is 'src/dataStructure/HashTable.js' + defaultTTL = 3600, // In milliseconds. defaultTTL is an optional property. This will use when ttl value is not passed on item add. +}); + +const ttl = 5 * 60 * 1000; // (defined 5 minutes) ttl should be in milliseconds + +cache.add('key', 'value', ttl); // add into cache. parameters key, value, ttl. +cache.get('key'); // get from cache +cache.has('key'); // checking from key is existing in cache +cache.remove('key'); // removing from cache +cache.size(); // get the size of cache +cache.runGC(); // manual cleaning the expired item. + +``` + + ### Creating Custom HashTable When and Why you should create custom hash table? The default hash table implemented with `Map`. If you want much more performance than default you can implement your own (like node wrapped c++ hash table). I think 1 to 5 million cache entry default hash table is fine if your use case is more than this go for custom hash table. @@ -42,6 +74,5 @@ To implement custom hashTable you have to use methods with symbols name provided #### Next? -* TTL engine. -* TTL combining with LRU engine +* TTL engine combining with LRU engine * LFU (Least frequently used) engine. diff --git a/docs/ttl-engine.md b/docs/ttl-engine.md index 86231bd..b7c2c1c 100644 --- a/docs/ttl-engine.md +++ b/docs/ttl-engine.md @@ -1,3 +1,9 @@ # TTL cache engine Architecture +One of the challenges on ttl cache replacement is to clean the expired items. For smart cleaning, when we add new item it will time partitioned by ttl/expired value and put it into a time corresponded bucket. +Whenever a get method called it check the element exist and check it is expired or not. If it is expired then removes the item and clean previous buckets. +There is also a `runGC()` method in ttl cache. It will clean the buckets in between last cleaned time and now. +TTL engine do not run `runGC()` method automatically or in an interval. +We do not need to iterate or look all items for cleaning because of expired time partitioning. check below image for more information of architecture. + ![](./images/ttl-arct.png) \ No newline at end of file From 961de504d2e6f99ac2cb1f0399ece74916632e9d Mon Sep 17 00:00:00 2001 From: Benhur Davies Date: Sat, 27 Jun 2020 23:29:58 +0200 Subject: [PATCH 10/12] build fix --- babel.config.js | 5 ++++- package-lock.json | 16 ++++++++++++---- package.json | 1 + 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/babel.config.js b/babel.config.js index 2d0288b..f3cab26 100644 --- a/babel.config.js +++ b/babel.config.js @@ -9,5 +9,8 @@ module.exports = { }, ], ], - plugins: [['@babel/plugin-proposal-optional-chaining']], + plugins: [ + ['@babel/plugin-proposal-optional-chaining'], + ['@babel/plugin-transform-destructuring'], + ], }; diff --git a/package-lock.json b/package-lock.json index f8cb7eb..6ffe9d6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -916,12 +916,20 @@ } }, "@babel/plugin-transform-destructuring": { - "version": "7.8.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.8.8.tgz", - "integrity": "sha512-eRJu4Vs2rmttFCdhPUM3bV0Yo/xPSdPw6ML9KHs/bjB4bLA5HXlbvYXPOD5yASodGod+krjYx21xm1QmL8dCJQ==", + "version": "7.10.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.10.1.tgz", + "integrity": "sha512-V/nUc4yGWG71OhaTH705pU8ZSdM6c1KmmLP8ys59oOYbT7RpMYAR3MsVOt6OHL0WzG7BlTU076va9fjJyYzJMA==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/helper-plugin-utils": "^7.10.1" + }, + "dependencies": { + "@babel/helper-plugin-utils": { + "version": "7.10.3", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.3.tgz", + "integrity": "sha512-j/+j8NAWUTxOtx4LKHybpSClxHoq6I91DQ/mKgAXn5oNUPIUiGppjPIX3TDtJWPrdfP9Kfl7e4fgVMiQR9VE/g==", + "dev": true + } } }, "@babel/plugin-transform-dotall-regex": { diff --git a/package.json b/package.json index c0cbe70..dc2dc63 100644 --- a/package.json +++ b/package.json @@ -48,6 +48,7 @@ "@babel/core": "^7.9.0", "@babel/node": "^7.8.7", "@babel/plugin-proposal-optional-chaining": "^7.9.0", + "@babel/plugin-transform-destructuring": "^7.10.1", "@babel/preset-env": "^7.9.0", "babel-eslint": "^10.1.0", "babel-jest": "^25.1.0", From 56bd47d7980ed980e8241e34c9af650ecacb1ae3 Mon Sep 17 00:00:00 2001 From: Benhur Davies Date: Sun, 28 Jun 2020 17:15:13 +0200 Subject: [PATCH 11/12] better error message --- src/cache.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cache.js b/src/cache.js index 2543797..b2d2fef 100644 --- a/src/cache.js +++ b/src/cache.js @@ -14,7 +14,7 @@ function factory({ case 'TTL': return new TTL({ HashTable, defaultTTL }); default: - throw Error(`Engine : ${engine} is not implemented. Currently we have only 'LRU' engine.`); + throw Error(`Engine : ${engine} is not implemented. Engine options are 'LRU', 'TTL'`); } } From a081f425d5fc3521ea8b8d222e5c8ec4954dd144 Mon Sep 17 00:00:00 2001 From: Benhur Davies Date: Tue, 30 Jun 2020 22:00:33 +0200 Subject: [PATCH 12/12] parseInt -> bitwise or --- src/engines/TimeToLive.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/engines/TimeToLive.js b/src/engines/TimeToLive.js index 1259717..bf2d8f1 100644 --- a/src/engines/TimeToLive.js +++ b/src/engines/TimeToLive.js @@ -132,12 +132,12 @@ function TimeToLive({ HashTable = DefaultHashTable, defaultTTL } = {}) { // time : unix timestamp milliseconds // interval : milliseconds (better to be factors of 60 (minutes)) function getForwardTimeIndex({ time, interval }) { - const timeParts = parseInt(time / interval, 10); + const timeParts = (time / interval) | 0; return timeParts * interval + interval; } function getBackwardTimeIndex({ time, interval }) { - const timeParts = parseInt(time / interval, 10); + const timeParts = (time / interval) | 0; return timeParts * interval; }