๐Ÿ™ ๋‹จ์œ„๋ฅผ ์ง€์ •ํ•ด์ฃผ์„ธ์š”! ๐Ÿ“

4992 ๋‹จ์–ด codequalityprogrammingjavascript
์ด ์ฝ”๋“œ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?

const success = myCache.mset([
    {key: "myKey", val: obj, ttl: 10000},
    {key: "myKey2", val: obj2},
]);

ttl๊ฐ€ 10,000๋ฐ€๋ฆฌ์ดˆ, ์ดˆ ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ธ์ง€ ์ „ํ˜€ ๋ช…ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด(๊ทธ๋ฆฌ๊ณ  JavaScriptsetTimeout()๊ฐ€ ๋ฐ€๋ฆฌ์ดˆ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๋ฉด) ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์‹ถ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž˜๋ชป๋œ! ๋ช‡ ์ดˆ ์•ˆ์— ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค!

์ด ์Šค๋‹ˆํŽซ์€ node-cache ์˜ README์— ์žˆ๋Š” ์˜ˆ์ œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ถˆ๋ช…ํ™•ํ•œ ์ฝ”๋“œ๋Š” ์‹ค์ œ๋กœ ๋„๋ฆฌ ํผ์ ธ ์žˆ์œผ๋ฏ€๋กœ ํŠน๋ณ„ํžˆ ์„ ํƒํ•˜๋ ค๊ณ  ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ README์—๋Š” ๋ช‡ ์ดˆ ์•ˆ์— ์™„๋ฃŒ๋œ๋‹ค๊ณ  ๋‚˜์™€ ์žˆ์ง€๋งŒ ํ™•์ธํ•˜๋ ค๋ฉด RTFM ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ฐ€ ๊ทธ๋Ÿด ์‹œ๊ฐ„์ด ์žˆ๊ฒ ์Šต๋‹ˆ๊นŒ?
ttl ์†์„ฑ์˜ ์ด๋ฆ„์„ ttlSeconds๋กœ ์ง€์ •ํ•˜๋ฉด ์ข‹์ง€ ์•Š์„๊นŒ์š”? ๊ทธ๋Ÿฌ๋ฉด ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์—๊ฒŒ ๊ทธ๊ฒƒ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๊ฐ€ ์ฆ‰์‹œ ๋ช…ํ™•ํ•ด์ง‘๋‹ˆ๋‹ค.

์•„๋‹ˆ๋ฉด ๋” ๋‚˜์€ ํ•ด๊ฒฐ์ฑ…์ด ์žˆ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚ ์งœ/์‹œ๊ฐ„



๋‚ ์งœ/์‹œ๊ฐ„์ด Unix ์‹œ๋Œ€(1970๋…„ 1์›” 1์ผ 00:00:00 UTC) ์ดํ›„ ์ •์ˆ˜ ๋ฐ€๋ฆฌ์ดˆ(๋˜๋Š” ์ดˆ)๋กœ ํ‘œํ˜„๋˜๋Š” ๊ฒƒ๋„ ๊ฝค ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

const myBirthday = 700876800000;


์ด๊ฒƒ๋„ ์งœ์ฆ๋‚˜. ์ด๊ฒƒ์ด Unix ์‹œ๋Œ€ ์ดํ›„์˜ ๋ฐ€๋ฆฌ์ดˆ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋งค์šฐ ๋†’๋‹ค๋Š” ๊ฒƒ์„ ์ธ์‹ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ์–ด๋–ค ๋‚ ์งœ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š”์ง€๋Š” ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋Œ€์‹  ๋‹ค์Œ์€ ์–ด๋–ป์Šต๋‹ˆ๊นŒ?

const myBirthday = new Date('1992-03-18T00:00:00.000Z');


์ด์ œ ์ด ์ฝ”๋“œ๋ฅผ ์ฝ๋Š” ์‚ฌ๋žŒ์€ ์ฝ”๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚ด๋Š” ๋‚ ์งœ๋ฅผ ์ •ํ™•ํžˆ ์•Œ๊ณ  ์žˆ์œผ๋ฉฐ myBirthday์— ์•ก์„ธ์Šคํ•˜๋Š” ์ฝ”๋“œ๋„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋ณ€ ์ฝ”๋“œ๋Š” ์ด ๊ฐ’number์ด ์ดˆ์ธ์ง€ ๋ฐ€๋ฆฌ์ดˆ์ธ์ง€์— ๋Œ€ํ•œ ๋ถ€์กฑ ์ง€์‹์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Date ์ด๋ฉฐ ๋งค์šฐ ๊ตฌ์ฒด์ ์ธ ์˜๋ฏธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ๊ฐ„๋Œ€


TTL(Time to Live)๋กœ ๋‹ค์‹œ ์ ํ”„ํ•ฉ๋‹ˆ๋‹ค. TTL์€ ํŠน์ • ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„์ด ์•„๋‹ˆ๋ผ ์‹œ๊ฐ„ ๊ธธ์ด(1์ดˆ, 1๋…„ ๋“ฑ)์ด๋ฏ€๋กœ Date๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œ์‹œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋ช…ํ™•์„ฑ์„ ์œ„ํ•ด TTL ์†์„ฑttlSeconds์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ๋งŽ์€ ๊ฒฝ์šฐ์— ํ›Œ๋ฅญํ•œ ์†”๋ฃจ์…˜์ด์ง€๋งŒ ์ด์— ๋Œ€ํ•ด Date์™€ ์œ ์‚ฌํ•œ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์žˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

Some languages์—๋Š” ์‹ค์ œ๋กœ ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. JavaScript๋Š” ๊ทธ๋ ‡์ง€ ์•Š์ง€๋งŒ timespan๊ณผ ๊ฐ™์€ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import timespan from 'timespan';

const ttl = timespan.fromSeconds(50);

console.log(ttl.totalMilliseconds()); // 50000
console.log(ttl.totalSeconds()); // 50
console.log(ttl.totalMinutes()); // 0.8333333333333334


์›ํ•˜๋Š” ๋‹จ์œ„๋กœ TTL์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ TTL์„ ์ „๋‹ฌํ•˜๋Š” ์ฝ”๋“œ๋Š” ์›ํ•˜๋Š” ๋‹จ์œ„๋กœ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์œ„์— ๋Œ€ํ•ด ์ „ํ˜€ ๋™์˜ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

If only NASA used constructs like this , ๊ทธ๋“ค์€ ๋ช‡ ๋‹ฌ๋Ÿฌ๋ฅผ ์ ˆ์•ฝํ•  ์ˆ˜ ์žˆ์—ˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๋ก 



์—ฌ๊ธฐ์„œ ๊ฐ€์Šด์—์„œ ๋ฒ—์–ด๋‚˜๊ณ  ์‹ถ์—ˆ๋˜ ์งง์€ ๊ฒƒ. ๋งŽ์€ ๋ฒ„๊ทธ๋Š” ์‚ฌ์šฉ ์ค‘์ธ ๋‹จ์œ„์— ๋Œ€ํ•œ ํ˜ผ๋™์— ๋ฟŒ๋ฆฌ๋ฅผ ๋‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹คํ–‰์Šค๋Ÿฝ๊ฒŒ๋„ ์ด๋Ÿฌํ•œ ์ข…๋ฅ˜์˜ ์œ„ํ—˜์„ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๋ช‡ ๊ฐ€์ง€ ๋„๊ตฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค์ด ๋” ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์œผ๋ฉด ์ข‹๊ฒ ๋‹ค!

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ