Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 16x 16x 16x 16x | import Crowi from 'server/crowi' import { RedisClient } from 'redis' export default class LRU { crowi: Crowi max: number client: RedisClient | null constructor(crowi: Crowi) { this.crowi = crowi this.max = 10 this.client = null Iif (this.crowi && this.crowi.redis) { this.client = this.crowi.redis } } removeByRange(namespace, max) { const { client } = this if (client) { return new Promise((resolve, reject) => { client.zremrangebyrank(namespace, 0, max, (err, response) => { if (err) reject(err) resolve(response) }) }) } } async add(namespace, key) { const { client } = this if (client) { await this.removeByRange(namespace, -this.max - 1) return new Promise((resolve, reject) => { client.zadd(namespace, Date.now(), key, (err, response) => { if (err) reject(err) resolve(response) }) }) } } range(namespace, limit = 0) { const { client } = this if (client) { return new Promise((resolve, reject) => { client.zrevrange(namespace, 0, limit - 1, (err, response) => { if (err) reject(err) resolve(response) }) }) } } get(namespace, limit) { if (this.client) { return this.range(namespace, limit) } } } |