Skip to content

Commit

Permalink
Fallback to db in case serialization fails
Browse files Browse the repository at this point in the history
  • Loading branch information
ilovepixelart committed May 9, 2024
1 parent 1f9798c commit 5e95320
Showing 1 changed file with 14 additions and 5 deletions.
19 changes: 14 additions & 5 deletions src/cache/engine/RedisCacheEngine.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,16 +17,25 @@ class RedisCacheEngine implements ICacheEngine {
}

async get(key: string): Promise<IData> {
const value = await this.#client.get(key)
if (value === null) {
try {
const value = await this.#client.get(key)
if (value === null) {
return undefined
}
return EJSON.parse(value) as IData
} catch (err) {
console.error(err)
return undefined
}
return EJSON.parse(value) as Promise<Record<string, unknown> | Record<string, unknown>[]>
}

async set(key: string, value: IData, ttl = Infinity): Promise<void> {
const serializedValue = EJSON.stringify(convertToObject(value))
await this.#client.setex(key, Math.ceil(ttl / 1000), serializedValue)
try {
const serializedValue = EJSON.stringify(convertToObject(value))
await this.#client.setex(key, Math.ceil(ttl / 1000), serializedValue)
} catch (err) {
console.error(err)
}
}

async del(key: string): Promise<void> {
Expand Down

0 comments on commit 5e95320

Please sign in to comment.