npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

cachero

v1.1.1

Published

Enable cache all CRUD operations, a library for [Node.js](http://nodejs.org).

Downloads

25

Readme

Cachero

Enable cache all CRUD operations, a library for Node.js.

Cachero Logo

const { createCachero } = require('cachero')

const cachero = createCachero()

await cachero.setting({ table, queryRunner })

const result = await cachero.select()

Installation

NPM

$ npm install cachero

Features

  • Easy CRUD caching
  • Very low latency
  • Minimize the use of DB
  • Reduces server load
  • Look-Aside + Write-Back caching
  • Easier syntax than most ORM

Example

Express Example

const express = require('express');
const { createCachero } = require('cachero')
const { createClient } = require('redis')
const { Pool } = require('pg')

const pool = new Pool()
const redis = createClient()

const app = express()
const postCachero = createCachero()

app.get('/post', function (req, res) {
  const cachedKey = req.originalUrl

  const result = await postCachero.select({ 
    column: ['*']
  }, cachedKey)

  res.json(result)
})

app.listen(3000, async () => {
  await pool.connect()
  await redis.connect()

  await postCachero.setting({ table: 'post', refKey: 'id', queryRunner: pool, redis })
});

More Usage

postCachero.select({
  column: [
    'post.*',
    'COALESCE(ARRAY_LENGTH(liked_user, 1), 0) AS like_count',
    'users.name AS owner_name'
  ],
  order: ['like_count DESC', 'created_at DESC'],
  where: {
    condition1: ['id', '=', '0'],
    condition2: ['like_count', '>=', '10'],
    result: ['condition1', '&&', 'condition2']
  },
  join: 'users ON post.maker_id = users.id',
  limit: 0,
  offset: 0
})

Create, Update, Delete, Scheduler Example

// Create, Update, Delete have to send a refKey

cachero.create({ id:'0', title:'new data' })

cachero.update({ id:'0', title:'update data' })

cachero.delete({ id: '0' })

cachero.scheduler([[12,0]])

setting

  • You shuold setting before use cachero
  • refKey is used as a reference value for saving, updating, and deleting data
  • You don't have to send preloadData, redis
  • If you send preloadData, it's saved and used before cachero get the data
  • If you send redis, the data is also saved in redis when data is saved in memory, which greatly increases stability

select

  • After you get all the columns of multiple data into * or table.*, if you get the detailed data of one of them again, cachero don't run sql query, so it's good for performance.
  • cachedKey is used to determine whether the value is valid when reading multiple data. Use it when you get multiple data, if you get the detailed data of one of them again, it doesn't have to be used

delete

  • You can erase only one specific value with an id value, but even if you send another key value, it erases all that data

License

MIT