0.3.1 • Published 3 years ago
@zcong/typeorm-cache v0.3.1
typeorm-cache
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