0.3.1 • Published 3 years ago

@zcong/typeorm-cache v0.3.1

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

typeorm-cache

NPM version NPM downloads JS Test codecov

like go-zero cache, but for NodeJS

Features

  • singleflight Concurrent requests for the same instance will only call the database once
  • cache nonexist Records that do not exist in the database will also be cached for a period of time
  • memory efficient A record will only cache one complete data, and a unique key will cache one primary key reference
  • sharding Out-of-the-box support for Redis cluster sharding by @zcong/node-redis-cache
  • metrics Out-of-the-box support prometheus metrics by @zcong/node-redis-cache

Install

$ yarn add @zcong/typeorm-cache
# or npm
$ npm i @zcong/typeorm-cache --save

Usage

@Entity()
export class Student {
  @PrimaryGeneratedColumn()
  studentId: number

  @Column({
    unique: true,
  })
  cardId: string

  @Column()
  age: number
}

const redis = new Redis()
const cache = new RedisCache({ redis, prefix: 'typeorm' })

const student = new TypeormCache(StudentRepository, cache, {
  disable: false,
  expire: 60, // cache expire seconds
  uniqueFields: ['cardId'], // cacheFindByUniqueKey method fields allowlist, filed must be unique
})

// findone with cache
console.log(await student.cacheFindByPk(1))
console.log(await student.cacheFindByUniqueKey('cardId', 'card-01'))
// updateone, will clear record cache
console.log(await student.cacheUpdateByPk(record))
// deleteone, will clear record cache
console.log(await student.deleteByPk(1))
// only clear record cache
console.log(await student.deleteCache(real))

License

MIT © zcong1993